কম্পিউটার টিউটোরিয়াল

MySQL-এ LEFT OUTER JOIN ব্যবহার করে দুটি টেবিল তুলনা ও মিসিং ID বের করা

দুটি টেবিল তুলনা করে যেই 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)

ব্যাখ্যা:

  1. LEFT OUTER JOIN - বাম টেবিল (First_Table) এর সব রো রাখে
  2. ON First_Table.Id = Second_Table.Id - ম্যাচ করার শর্ত
  3. 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 সাধারণত দ্রুত। ইনডেক্স নিশ্চিত করুন।

  1. MySQL-এ একক SELECT কোয়েরিতে দুটি টেবিল থেকে ডেটা ফেচ করা

  2. MySQL-এ UNION ALL এবং INSERT INTO SELECT ব্যবহার করে একক কোয়েরিতে দুটি টেবিলে ডেটা ইনসার্ট করুন

  3. লেফ্ট, রাইট এবং ফুল আউটার জয়েনের পার্থক্য

  4. Python দিয়ে MySQL-এ LEFT JOIN করা