SQL Eleminate Muletple Value (S) إذا كان للمعرف نفسه قيمة فارغة مرتبطة

StackOverflow https://stackoverflow.com/questions/3415959

  •  26-09-2019
  •  | 
  •  

سؤال

طيب هنا يذهب:

لدي جدول مع معرف (يمكن أن يكون مكررًا ولكن ليس فارغًا) والقيمة (يمكن أن تكون مكررة و NULL)

id      value
-----   -----
1       red
1       red
1       (null)
2       blue
2       blue
3       (null)

فكيف يمكنني إرجاع المعرف والقيمة لجميع السجلات التي لها قيمة ، ولكن إذا تم العثور على قيمة فارغة أيضًا ، فلا تضمنها في مجموعة النتائج.

لذلك ستكون العودة

id      value
-----   -----
2       blue

كمعرف 1 و 3 لهما قيمة (خالية) في واحد أو أكثر من النتائج

هل كانت مفيدة؟

المحلول

إنه استعلام نموذجي "حدد مكان عدم وجوده" مع العديد من الطرق لكتابة الإجابة ، على سبيل المثال:

باستخدام انضمام يسار / حيث ... خالية:

SELECT DISTINCT T1.id, T1.value
FROM your_table T1
LEFT JOIN your_table T2
ON T1.id = T2.id AND T2.value IS NULL
WHERE T2.id IS NULL

باستخدام ليس في:

SELECT DISTINCT id, value
FROM your_table
WHERE id NOT IN
(
    SELECT DISTINCT id
    FROM your_table
    WHERE value IS NULL
)

استخدام لا يوجد:

SELECT DISTINCT id, value
FROM your_table
WHERE NOT EXISTS
(
    SELECT NULL
    FROM your_table T1
    WHERE your_table.id = T1.id AND T1.value IS NULL
)

نصائح أخرى

select t1.id, t1.value
from MyTable t1
left outer join MyTable t2 on t1.id = t2.id and t2.value is null
where t2.id is null
group by t1.id, t1.value
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top