ใน MySQL มีออปเกอร์เตอร์ "ไม่เท่ากับ" 2 รูปแบบ ให้ผลลัพธ์เหมือนกัน:
<>- มาตรฐาน ANSI SQL (แนะนำ)!=- MySQL Extension (ใช้ได้แต่ไม่ใช่ Standard)
รูปแบบคำสั่ง
SELECT * FROM yourTableName WHERE column_name <> value;
-- หรือ
SELECT * FROM yourTableName WHERE column_name != value;
ตัวอย่างการใช้งาน
1. สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE NotEqualsDemo (Id INT);
Query OK, 0 rows affected (1.03 sec)
mysql> INSERT INTO NotEqualsDemo VALUES (1), (2), (3), (4), (5);
2. ดูข้อมูลทั้งหมด
mysql> SELECT * FROM NotEqualsDemo;
+------+
| Id |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+------+
5 rows in set (0.00 sec)
3. ใช้ <> เพื่อข้ามค่า 3
mysql> SELECT * FROM NotEqualsDemo WHERE Id <> 3;
+------+
| Id |
+------+
| 1 |
| 2 |
| 4 |
| 5 |
+------+
4 rows in set (0.00 sec)
4. ใช้ != ให้ผลลัพธ์เหมือนกัน
mysql> SELECT * FROM NotEqualsDemo WHERE Id != 3;
+------+
| Id |
+------+
| 1 |
| 2 |
| 4 |
| 5 |
+------+
4 rows in set (0.00 sec)
ความแตกต่างกับ NULL
สำคัญ: NULL <> 3 คือ NULL (ไม่ใช่ TRUE) → แถวที่มี NULL จะ **ไม่ถูกเลือก**
mysql> INSERT INTO NotEqualsDemo VALUES (NULL);
mysql> SELECT * FROM NotEqualsDemo WHERE Id <> 3;
+------+
| Id |
+------+
| 1 |
| 2 |
| 4 |
| 5 |
+------+
4 rows in set (0.00 sec)
แถว NULL ไม่ออกมา เพราะ NULL <> 3 = UNKNOWN
หากต้องการรวม NULL ด้วย
SELECT * FROM NotEqualsDemo WHERE Id <> 3 OR Id IS NULL;
+------+
| Id |
+------+
| 1 |
| 2 |
| 4 |
| 5 |
| NULL |
+------+
5 rows in set (0.00 sec)
NOT IN vs NOT EXISTS
สำหรับหลายค่า:
-- ใช้ NOT IN (ระวัง NULL ใน Subquery)
SELECT * FROM table WHERE id NOT IN (1, 2, 3);
-- ใช้ NOT EXISTS (ปลอดภัยกว่ากับ NULL)
SELECT * FROM table t WHERE NOT EXISTS (SELECT 1 FROM other WHERE id = t.id);
สรุปแนวทางเลือก
- ใช้
<>สำหรับ Code ที่ต้อง Portable ระหว่าง Database - ใช้
!=ได้หากทีมคุเคยและใช้ MySQL เท่านั้น - ระวัง NULL เสมอ - ใช้
IS NULL/IS NOT NULLแยกต่างหาก