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

Sử dụng CASE WHEN trong MySQL thay cho WHERE bên trong CASE

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.).