SQL | عامل ناقص
يتم استخدام عامل التشغيل MINUS مع اثنين SELECT عبارات لإرجاع فقط تلك الصفوف من الاستعلام الأول غير الموجودة في الاستعلام الثاني. يقوم بتصفية كافة الصفوف الشائعة ويحتفظ فقط بالصفوف الفريدة من مجموعة النتائج الأولى.
التمثيل التصويري :
كما ترون في الرسم البياني أعلاه، سيُرجع عامل التشغيل MINUS فقط تلك الصفوف الموجودة في مجموعة النتائج من الجدول 1 وغير الموجودة في مجموعة النتائج من الجدول 2.
بناء الجملة:
SELECT column1 column2 ... columnN
FROM table_name1
[WHERE condition]
MINUS
SELECT column1 column2 ... columnN
FROM table_name2
[WHERE condition];في بناء الجملة أعلاه
- الاختيار الأول: استرداد الأعمدة المحددة (column1 column2... columnN) من table_name1 الذي تمت تصفيته اختياريًا حسب شرط WHERE.
- ناقص: يقوم عامل التشغيل MINUS بإرجاع صفوف من الاستعلام الأول غير موجودة في الاستعلام الثاني.
- التحديد الثاني: يسترد نفس الأعمدة من table_name2 بعد تصفيته اختياريًا حسب شرط WHERE.
- الإخراج: تتضمن النتيجة صفوفًا من table_name1 غير موجودة في table_name2. تتم إزالة التكرارات من الإخراج النهائي.
الجداول :
الجدول 1
| اسم | عنوان | عمر | درجة |
|---|---|---|---|
| صارِم | دلهي | 20 | أ |
| غوراف | جايبور | 21 | ب |
| يمارس | مومباي | 21 | أ |
| دانراج | كولكاتا | 22 | ب |
الجدول 2
| اسم | عمر | هاتف | درجة |
|---|---|---|---|
| عكاش | 20 | XXXXXXXXX | أ |
| ديراج | 21 | XXXXXXXXX | ب |
| فايبهاف | 21 | XXXXXXXXX | أ |
| دانراج | 22 | XXXXXXXXX | ب |
الاستعلامات :
SELECT NAME AGE GRADE
FROM Table1
MINUS
SELECT NAME AGE GRADE
FROM Table2;
الإخراج:
| اسم | عمر | درجة |
|---|---|---|
| صارِم | 20 | أ |
| غوراف | 21 | ب |
| يمارس | 21 | أ |
في هذا الاستعلام:
- إرجاع الصفوف الفريدة للجدول1 فقط.
- إذا كان الصف الأخير في كلا الجدولين هو نفسه، فسيتم استبعاده من النتيجة. وبالتالي سيتم إرجاع الصفوف الثلاثة الأولى فقط من الجدول 1.
إنشاء اختبارملحوظة :
- عامل التشغيل MINUS مدعوم في Oracle ولكنه غير مدعوم في SQL Server أو PostgreSQL.
- بالنسبة لقواعد البيانات هذه، استخدم
EXCEPTالمشغل كبديل.