দুটি টেবিল তুলনা করে যেই ID গুলো প্রথম টেবিলে আছে কিন্তু দ্বিতীয় টেবিলে নেই (মিসিং), সেগুলো বের করতে LEFT OUTER JOIN ব্যবহার করুন।
উদাহরণ দিয়ে বুঝি
১. প্রথম টেবিল (First_Table)
mysql> CREATE TABLE First_Table (Id INT);
mysql> INSERT INTO First_Table VALUES(1), (2), (3), (4);
mysql> SELECT * FROM First_Table;
+------+
| Id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
+------+
4 rows in set (0.00 sec)
২. দ্বিতীয় টেবিল (Second_Table)
mysql> CREATE TABLE Second_Table (Id INT);
mysql> INSERT INTO Second_Table VALUES(2), (4);
mysql> SELECT * FROM Second_Table;
+------+
| Id |
+------+
| 2 |
| 4 |
+------+
2 rows in set (0.00 sec)
৩. LEFT OUTER JOIN দিয়ে মিসিং ID বের করুন
mysql> SELECT First_Table.Id
-> FROM First_Table
-> LEFT OUTER JOIN Second_Table ON First_Table.Id = Second_Table.Id
-> WHERE Second_Table.Id IS NULL;
+------+
| Id |
+------+
| 1 |
| 3 |
+------+
2 rows in set (0.00 sec)
ব্যাখ্যা:
LEFT OUTER JOIN- বাম টেবিল (First_Table) এর সব রো রাখেON First_Table.Id = Second_Table.Id- ম্যাচ করার শর্তWHERE Second_Table.Id IS NULL- যেখানে ম্যাচ পাওয়া যায়নি (দ্বিতীয় টেবিলে নেই) সেগুলো ফিল্টার করে
বিকল্প পদ্ধতি: NOT IN / NOT EXISTS
-- NOT IN
SELECT Id FROM First_Table WHERE Id NOT IN (SELECT Id FROM Second_Table);
-- NOT EXISTS (প্রফারেবল, NULL-সেফ)
SELECT Id FROM First_Table f
WHERE NOT EXISTS (SELECT 1 FROM Second_Table s WHERE s.Id = f.Id);
পারফরম্যান্স: বড় ডেটাসেটে NOT EXISTS বা LEFT JOIN ... IS NULL সাধারণত দ্রুত। ইনডেক্স নিশ্চিত করুন।