SQL Eleminate Muletple Value (S) إذا كان للمعرف نفسه قيمة فارغة مرتبطة
-
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
لا تنتمي إلى StackOverflow