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

Tạo điều kiện đa cột trong MySQL với hàm IF()

Hàm IF() trong MySQL

Cú pháp: IF(condition, true_value, false_value) - trả về true_value nếu condition TRUE, ngược lại false_value.

Ví dụ

Tạo bảng điểm:

CREATE TABLE DemoTable612 (
    Number1 INT,
    Number2 INT,
    Score INT
);
INSERT INTO DemoTable612 VALUES
(10, 20, 1000),
(30, 40, 500),
(50, 70, 1200),
(100, 120, 400);

Tính Result: Nếu Score > 500 thì nhân 2 số, ngược lại cộng 2 số:

SELECT *,
       IF(Score > 500, Number1 * Number2, Number1 + Number2) AS Result
FROM DemoTable612;

Kết quả:

+---------+---------+-------+--------+
| Number1 | Number2 | Score | Result |
+---------+---------+-------+--------+
| 10      | 20      | 1000  | 200    |
| 30      | 40      | 500   | 70     |
| 50      | 70      | 1200  | 3500   |
| 100     | 120     | 400   | 220    |
+---------+---------+-------+--------+

IF() vs CASE WHEN

Đặc điểmIF()CASE WHEN
Số nhánh2 (true/false)Nhiều (WHEN...THEN...ELSE)
Độ phức tạpĐơn giảnPhức tạp
Độ đọcTốt cho điều kiện đơnTốt cho logic nhiều nhánh
Lồng nhauKhó đọcDễ quản lý

Ví dụ CASE WHEN tương đương

SELECT *,
       CASE
           WHEN Score > 500 THEN Number1 * Number2
           ELSE Number1 + Number2
       END AS Result
FROM DemoTable612;

Ứng dụng thực tế

  • Phân loại dữ liệu: IF(score >= 60, 'Pass', 'Fail').
  • Tính giá khuyến mãi: IF(qty > 100, price * 0.9, price).
  • Chuyển đổi giá trị: IF(status = 1, 'Active', 'Inactive').
  • Kết hợp nhiều điều kiện: IF(a > b AND c < d, 'X', 'Y').

Lưu ý

  • IF() là function, IF trong stored program là statement (có THEN/END IF).
  • Tránh lồng IF() quá sâu → dùng CASE.
  • NULL trong condition: IF(NULL, ...) luôn trả về false_value.