سؤال

كيف يمكنني الحصول على الفرق المحدد لمجموعتين للنتيجة؟

قل لدي مجموعة نتائج (عمود واحد فقط في كل):

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) لذلك لا يتم تحديد الفارق ، ولكن قد يكون مفيدًا أيضًا (ربما يكون أكثر كفاءة من الانضمام الخارجي).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top