Câu lệnh CASE WHEN trong MySQL cho phép bạn thực hiện logic điều kiện trực tiếp trong truy vấn, tương tự như cấu trúc if-else trong lập trình. Cú pháp cơ bản như sau:
SELECT *,
CASE
WHEN dieu_kien_1 THEN ket_qua_1
WHEN dieu_kien_2 THEN ket_qua_2
...
ELSE ket_qua_mac_dinh
END AS ten_cot_moi
FROM ten_bang;
Ví dụ minh họa
Tạo bảng DemoTable lưu tên học sinh và điểm số:
CREATE TABLE DemoTable (
StudentName VARCHAR(20),
StudentMarks INT
);
Chèn dữ liệu mẫu:
INSERT INTO DemoTable VALUES ('Chris', 78);
INSERT INTO DemoTable VALUES ('Robert', 88);
INSERT INTO DemoTable VALUES ('Mike', 75);
INSERT INTO DemoTable VALUES ('Sam', 98);
Sử dụng CASE WHEN để phân loại điểm số:
SELECT *,
CASE
WHEN StudentMarks > 90 THEN 'Rất giỏi'
WHEN StudentMarks > 80 THEN 'Giỏi'
ELSE 'Cần cải thiện'
END AS XepLoai
FROM DemoTable;
Kết quả
| StudentName | StudentMarks | XepLoai |
|---|---|---|
| Chris | 78 | Cần cải thiện |
| Robert | 88 | Giỏi |
| Mike | 75 | Cần cải thiện |
| Sam | 98 | Rất giỏi |
Lưu ý: MySQL đánh giá các điều kiện theo thứ tự và dừng lại ở điều kiện đầu tiên thỏa mãn. Mệnh đề ELSE là tùy chọn; nếu thiếu và không có điều kiện nào khớp, kết quả sẽ là NULL.