MySQL: اختلاف مجموعتي النتائج
-
01-10-2019 - |
سؤال
كيف يمكنني الحصول على الفرق المحدد لمجموعتين للنتيجة؟
قل لدي مجموعة نتائج (عمود واحد فقط في كل):
result1:
'a'
'b'
'c'
result2:
'b'
'c'
أرغب في ناقص ما هو في النتيجة 1 حسب النتيجة 2: النتيجة 1 - النتيجة 2 بحيث يساوي:
difference of result1 - result2:
'a'
المحلول
لأداء النتيجة 1 - النتيجة 2 ، يمكنك الانضمام إلى النتيجة 1 مع النتيجة 2 ، وعناصر الإخراج فقط الموجودة في النتيجة 1. فمثلا:
SELECT DISTINCT result1.column
FROM result1 LEFT JOIN result2 ON result1.column = result2.column
WHERE result2.column IS NULL
لاحظ أن هذه ليست مجموعة فرق, ، ولن يخرج العناصر في النتيجة 2 التي لا توجد في النتيجة 1. تم ضبطه الطرح.
أنظر أيضا: نسخة أرشيف الويب من منشور المدونة ذات الصلة.
نصائح أخرى
إذا كنت تريد الأشياء في result1
التي ليست في result2
, ، ماذا عن:
SELECT distinct result1
FROM t1
WHERE result1 NOT IN (select distinct result2 from t2);
أو:
SELECT distinct result
from t1 t
where NOT EXISTS (select 1 from t2 where result2 = t.result1)
ملاحظة: إذا result1
هي مجموعة فرعية من result2
ثم ستعيد الاستعلامات المذكورة أعلاه مجموعة فارغة (لن تظهر لك الأشياء result2
التي ليست في result1
) لذلك لا يتم تحديد الفارق ، ولكن قد يكون مفيدًا أيضًا (ربما يكون أكثر كفاءة من الانضمام الخارجي).