কোনো টেবিলে কোন মানগুলো অনুপস্থিত তা খুঁজে বের করতে UNION ALL দিয়ে একটি ভার্চুয়াল টেবিল বানিয়ে NOT EXISTS বা NOT IN ব্যবহার করা যায়।
টেবিল ও ডেটা তৈরি
mysql> CREATE TABLE DemoTable1918 (
Value INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
mysql> INSERT INTO DemoTable1918 VALUES (), (), (), (), (); -- ১ থেকে ৫
টেবিলের ডেটা
mysql> SELECT * FROM DemoTable1918;
+-------+ | Value | +-------+ | 1 | | 2 | | 3 | | 4 | | 5 | +-------+
অনুপস্থিত মান খুঁজে বের করার কোয়েরি (৬, ৭, ৮)
mysql> SELECT tbl.Value
FROM (
SELECT 6 AS Value UNION ALL
SELECT 7 UNION ALL
SELECT 8
) tbl
WHERE NOT EXISTS (
SELECT 1 FROM DemoTable1918 tbl1 WHERE tbl1.Value = tbl.Value
);
আউটপুট:
+-------+ | Value | +-------+ | 6 | | 7 | | 8 | +-------+
বিকল্প: LEFT JOIN পদ্ধতি
SELECT v.val FROM (SELECT 6 AS val UNION ALL SELECT 7 UNION ALL SELECT 8) v LEFT JOIN DemoTable1918 t ON t.Value = v.val WHERE t.Value IS NULL;
ব্যাখ্যা
UNION ALLদ্রুত (ডুপ্লিকেট চেক করে না)।NOT EXISTSসাধারণতNOT INচেয়ে দ্রুত এবং NULL-সেফ।- বüyük সেটের জন্য টেম্পোরারি টেবিল বা CTE (MySQL 8.0+) ভালো।