Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Truy xuất bản ghi cụ thể với toán tử AND & OR trong một truy vấn MySQL

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.