একই কোয়েরিতে নির্দিষ্ট রেকর্ড বাদ দেওয়া এবং NULL মান থাকা রেকর্ড দেখানোর জন্য NOT IN এবং IS NULL একসাথে ব্যবহার করা হয়।
টেবিল তৈরি ও ডেটা ইনসার্ট
mysql> CREATE TABLE DemoTable793 (
StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName VARCHAR(100)
);
Query OK, 0 rows affected (0.81 sec)
mysql> INSERT INTO DemoTable793(StudentName) VALUES ('Adam');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable793(StudentName) VALUES ('Bob');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable793(StudentName) VALUES (NULL);
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable793(StudentName) VALUES ('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable793(StudentName) VALUES ('Robert');
Query OK, 1 row affected (1.03 sec)
সকল রেকর্ড
mysql> SELECT * FROM DemoTable793;
আউটপুট:
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1 | Adam | | 2 | Bob | | 3 | NULL | | 4 | Chris | | 5 | Robert | +-----------+-------------+ 5 rows in set (0.00 sec)
'Chris' বাদ দিয়ে NULL সহ রেকর্ড দেখানো
mysql> SELECT * FROM DemoTable793
WHERE StudentName NOT IN ('Chris') OR StudentName IS NULL;
ফলাফল (Chris বাদ, NULL থাকে):
+-----------+-------------+ | StudentId | StudentName | +-----------+-------------+ | 1 | Adam | | 2 | Bob | | 3 | NULL | | 5 | Robert | +-----------+-------------+ 4 rows in set (0.00 sec)
গুরুত্বপূর্ণ সতর্কতা
NOT IN তালিকাতে NULL থাকলে পুরো ফলাফল খালি আসে! উদাহরণ:
WHERE col NOT IN (1, 2, NULL) -- সবসময় FALSE রিটার্ন করে
সমাধান: WHERE col NOT IN (1,2) AND col IS NOT NULL বা WHERE NOT (col IN (1,2)) ব্যবহার করুন।