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

Thực hiện phép toán học trong điều kiện CASE WHEN trong MySQL

MySQL không có câu lệnh IF ... THEN ... ELSE dùng trực tiếp trong SELECT (chỉ có trong stored program). Thay vào đó, sử dụng biểu thức CASE để thực hiện logic điều kiện và phép toán học trên cột.

Tạo bảng sản phẩm

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FruitName VARCHAR(100),
    FruitPrice INT
);

mysql> INSERT INTO DemoTable (FruitName, FruitPrice) VALUES
('Orange', 250), ('Banana', 100), ('Apple', 150), ('Pomegranate', 200);

Dữ liệu

mysql> SELECT * FROM DemoTable;
+----+-------------+------------+
| Id | FruitName   | FruitPrice |
+----+-------------+------------+
|  1 | Orange      |        250 |
|  2 | Banana      |        100 |
|  3 | Apple       |        150 |
|  4 | Pomegranate |        200 |
+----+-------------+------------+

Sử dụng CASE để tính giá gốc (giả sử Orange đang giảm giá 80%)

mysql> SELECT Id, FruitName, FruitPrice,
    CASE
        WHEN FruitName = 'Orange' THEN FruitPrice / 5
        ELSE FruitPrice
    END AS OriginalPrice
FROM DemoTable;

Kết quả

+----+-------------+------------+---------------+
| Id | FruitName   | FruitPrice | OriginalPrice |
+----+-------------+------------+---------------+
|  1 | Orange      |        250 |        50.0000|
|  2 | Banana      |        100 |           100 |
|  3 | Apple       |        150 |           150 |
|  4 | Pomegranate |        200 |           200 |
+----+-------------+------------+---------------+

Các dạng CASE

1. CASE đơn giản (Simple CASE) - so sánh bằng

CASE column_name
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ELSE default_result
END

2. CASE tìm kiếm (Searched CASE) - điều kiện bất kỳ

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE default_result
END

Ví dụ trên dùng dạng Searched CASE.

Phép toán học trong THEN

Có thể dùng mọi biểu thức số học: +, -, *, /, %, hàm số học (ROUND, FLOOR, POWER...).

Mẹo: Dùng CASE trong SELECT, WHERE, ORDER BY, GROUP BY, UPDATE, SET... rất linh hoạt.