MySQL-এ দুটি কলামের মান ভিন্ন (Not Equal) হলে সারো সিলেক্ট করা, NULL বিবেচনায়
দুটি কলামের মান সমান নয় এমন সারো খুঁজে বের করতে != বা <> অপারেটর ব্যবহার করা হয়। কিন্তু NULL এর সাথে তুলনা especiais — NULL != 5 হলো NULL (true/false নয়)। তাই IS NULL চেক যোগ করতে হয়।
সিনট্যাক্স
SELECT * FROM yourTableName WHERE col1 != col2 OR (col1 IS NULL AND col2 IS NOT NULL) OR (col2 IS NULL AND col1 IS NOT NULL);
উদাহরণ
টেবিল তৈরি
mysql> CREATE TABLE selectTwoColumns (
-> Id INT NOT NULL AUTO_INCREMENT,
-> FirstNumber INT,
-> SecondNumber INT,
-> PRIMARY KEY(Id)
-> );
ডেটা ইনসার্ট
mysql> INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(10, 20); mysql> INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(30, 40); mysql> INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(20, 20); mysql> INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(50, 60); mysql> INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(50, 50); mysql> INSERT INTO selectTwoColumns(FirstNumber, SecondNumber) VALUES(70, NULL);
সকল রেকর্ড
mysql> SELECT * FROM selectTwoColumns;
+----+-------------+--------------+ | Id | FirstNumber | SecondNumber | +----+-------------+--------------+ | 1 | 10 | 20 | | 2 | 30 | 40 | | 3 | 20 | 20 | | 4 | 50 | 60 | | 5 | 50 | 50 | | 6 | 70 | NULL | +----+-------------+--------------+
কোয়েরি: মান ভিন্ন হলে (NULL হিসাবেও)
mysql> SELECT * FROM selectTwoColumns
-> WHERE FirstNumber != SecondNumber
-> OR (FirstNumber IS NULL AND SecondNumber IS NOT NULL)
-> OR (SecondNumber IS NULL AND FirstNumber IS NOT NULL);
ফলাফল
+----+-------------+--------------+ | Id | FirstNumber | SecondNumber | +----+-------------+--------------+ | 1 | 10 | 20 | | 2 | 30 | 40 | | 4 | 50 | 60 | | 6 | 70 | NULL | +----+-------------+--------------+
আইডি ৩ এবং ৫ বাদ পড়েছে (মান সমান)। আইডি ৬ এসেছে কারণ একটি NULL, অন্যটি নন-NULL।