MySQL EXCEPT সেট অপারেটর সাপোর্ট করে না (PostgreSQL, Oracle, SQL Server সাপোর্ট করে)। এর সমতুল্য ফলাফল পেতে NOT IN বা NOT EXISTS ব্যবহার করতে হয়।
দুই টেবিল তৈরি
mysql> CREATE TABLE DemoTable1 (Number1 INT); mysql> INSERT INTO DemoTable1 VALUES (100), (200), (300); mysql> CREATE TABLE DemoTable2 (Number1 INT); mysql> INSERT INTO DemoTable2 VALUES (100), (400), (300);
DemoTable1-এ আছে কিন্তু DemoTable2-এ নেই (EXCEPT-এর কাজ)
mysql> SELECT Number1 FROM DemoTable1
WHERE Number1 NOT IN (SELECT Number1 FROM DemoTable2);
ফলাফল
+---------+ | Number1 | +---------+ | 200 | +---------+
বিকল্প: NOT EXISTS (নাল-সেফ এবং দ্রুত)
SELECT Number1 FROM DemoTable1 t1 WHERE NOT EXISTS (SELECT 1 FROM DemoTable2 t2 WHERE t2.Number1 = t1.Number1);
তুলনা:
| পদ্ধতি | নাল হ্যান্ডলিং | পারফরম্যান্স |
|---|---|---|
| NOT IN | সাবকোয়েরি NULL দিলে ফলাফল খালি হয় | মাঝারি |
| NOT EXISTS | নাল সেফ, সঠিক ফলাফল | ভালো (ইন্ডেক্স ব্যবহার করে) |
| LEFT JOIN ... WHERE IS NULL | নাল সেফ | খুব ভালো (বড় ডেটাসেটের জন্য) |
সুপারিশ: আধুনিক MySQL-এ NOT EXISTS বা LEFT JOIN প্রিফার করুন।