DELETE ... WHERE ... NOT IN দিয়ে বর্জিত রেকর্ড রাখা
MySQL-এ নির্দিষ্ট কিছু মান বাদ দিয়ে বাকি সব রেকর্ড ডিলিট করতে NOT IN অপারেটর ব্যবহার করা হয়।
টেবিল ও ডেটা
mysql> CREATE TABLE DemoTable (FirstName VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES('Chris'), ('Robert'), ('Mike'), ('Sam'), ('David');
ডিলিটের আগে
+-----------+ | FirstName | +-----------+ | Chris | | Robert | | Mike | | Sam | | David | +-----------+
NOT IN দিয়ে ডিলিট (Robert ও Mike বাদ)
mysql> DELETE FROM DemoTable WHERE FirstName NOT IN('Robert', 'Mike');
Query OK, 3 rows affected (0.17 sec)
ডিলিটের পর
+-----------+ | FirstName | +-----------+ | Robert | | Mike | +-----------+
ব্যাখ্যা
NOT IN('Robert','Mike')— এই দুটি মান ছাড়া সব রো ডিলিট হবে।INবাNOT INএর ভেতরে NULL থাকলে ফলাফল অপ্রত্যাশিত হতে পারে (NULL তুলনা UNKNOWN রিটার্ন করে)।- সাবকোয়েরি ও ব্যবহার করা যায়:
WHERE id NOT IN (SELECT id FROM other_table)।
সতর্কতা
বড় টেবিলে NOT IN সাবকোয়েরির সাথে ধীর হতে পারে; NOT EXISTS বা LEFT JOIN ... WHERE ... IS NULL বেশি কার্যকর।