Giới thiệu
Khi kết hợp các điều kiện AND và OR trong mệnh đề WHERE, thứ tự ưu tiên (precedence) rất quan trọng: AND có độ ưu tiên cao hơn OR. Việc sử dụng ngoặc đơn () giúp làm rõ logic và tránh kết quả không mong muốn.
Ví dụ minh họa
Bước 1: Tạo bảng và chèn dữ liệu
CREATE TABLE DemoTable2015 (
StudentId INT,
StudentName VARCHAR(20),
StudentCountryName VARCHAR(20)
);
INSERT INTO DemoTable2015 VALUES (1, 'Chris', 'US');
INSERT INTO DemoTable2015 VALUES (2, 'Bob', 'UK');
INSERT INTO DemoTable2015 VALUES (3, 'David', 'AUS');
INSERT INTO DemoTable2015 VALUES (4, 'Robert', 'US');
Bước 2: Truy vấn với điều kiện phức hợp
Yêu cầu: Tìm sinh viên có tên 'David' HOẶC (quốc gia 'UK' VÀ StudentId = 3).
SELECT * FROM DemoTable2015
WHERE StudentName = 'David'
OR (StudentCountryName = 'UK' AND StudentId = 3);
Kết quả:
+-----------+-------------+--------------------+
| StudentId | StudentName | StudentCountryName |
+-----------+-------------+--------------------+
| 3 | David | AUS |
+-----------+-------------+--------------------+
Giải thích: Điều kiện StudentName = 'David' đúng ở hàng 3. Điều kiện thứ hai (StudentCountryName = 'UK' AND StudentId = 3) sai vì hàng 3 có quốc gia là 'AUS', không phải 'UK'. Do đó chỉ hàng 3 được trả về.
Lưu ý quan trọng: Nếu không dùng ngoặc đơn, MySQL sẽ hiểu là StudentName = 'David' OR StudentCountryName = 'UK' AND StudentId = 3 → tương đương StudentName = 'David' OR (StudentCountryName = 'UK' AND StudentId = 3). Luôn nên dùng ngoặc đơn để code dễ đọc và đúng logic.