MySQL không cho phép mệnh đề WHERE trực tiếp bên trong CASE. Thay vào đó, bạn dùng cấu trúc CASE WHEN condition THEN ... ELSE ... END để thực hiện logic điều kiện.
Ví dụ minh họa
Tạo bảng:
mysql> create table DemoTable1040 (
Value1 int,
Value2 int,
Value3 int
);
Chèn dữ liệu:
mysql> insert into DemoTable1040 values(10,30,1); mysql> insert into DemoTable1040 values(40,20,50); mysql> insert into DemoTable1040 values(80,90,100);
Hiển thị dữ liệu:
mysql> select * from DemoTable1040;
Kết quả:
+--------+--------+--------+ | Value1 | Value2 | Value3 | +--------+--------+--------+ | 10 | 30 | 1 | | 40 | 20 | 50 | | 80 | 90 | 100 | +--------+--------+--------+
Truy vấn CASE WHEN
mysql> select case when (Value1=40 AND Value2=20) then Value2 else Value1 end as selectedValue from DemoTable1040;
Kết quả:
+---------------+ | selectedValue | +---------------+ | 10 | | 20 | | 80 | +---------------+
Giải thích:
- Hàng 1: Value1=10, Value2=30 → điều kiện FALSE → ELSE Value1 = 10
- Hàng 2: Value1=40, Value2=20 → điều kiện TRUE → THEN Value2 = 20
- Hàng 3: Value1=80, Value2=90 → điều kiện FALSE → ELSE Value1 = 80
Cú pháp CASE:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
Khác với CASE expr WHEN val1 THEN ... (so sánh bằng), CASE WHEN condition cho phép điều kiện phức tạp (AND, OR, >, <, IS NULL, v.v.).