Kết hợp các điều kiện OR và AND trong mệnh đề WHERE cho phép lọc dữ liệu linh hoạt. MySQL đánh giá AND trước OR, do đó hãy dùng ngoặc đơn để xác định thứ tự ưu tiên rõ ràng.
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(20),
Age INT
);
Chèn dữ liệu (có giá trị NULL):
mysql> INSERT INTO DemoTable(Name, Age) VALUES('John', 21);
mysql> INSERT INTO DemoTable(Name, Age) VALUES(NULL, 20);
mysql> INSERT INTO DemoTable(Name, Age) VALUES('David', 23);
mysql> INSERT INTO DemoTable(Name, Age) VALUES('Carol', NULL);
Xem dữ liệu:
mysql> SELECT * FROM DemoTable;
Kết quả
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 1 | John | 21 | | 2 | NULL | 20 | | 3 | David | 23 | | 4 | Carol | NULL | +----+-------+------+
Truy vấn: Lấy các hàng mà Name='David' HOẶC (Name IS NULL VÀ Age=20):
mysql> SELECT * FROM DemoTable
-> WHERE Name='David' OR (Name IS NULL AND Age=20);
Kết quả
+----+-------+------+ | Id | Name | Age | +----+-------+------+ | 2 | NULL | 20 | | 3 | David | 23 | +----+-------+------+
Mẹo: Luôn dùng ngoặc đơn () để nhóm điều kiện AND khi kết hợp với OR, tránh logic sai do thứ tự ưu tiên toán tử.