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

Sử dụng IF/ELSE trong SELECT MySQL (hàm IF)

Vấn đề: Trả về giá trị khác nhau tùy theo điều kiện trong SELECT

Cột PhotoLiked lưu số like. Cần hiển thị UserName nếu like > 75, ngược lại hiển thị 'Likes are less'.

Giải pháp: Hàm IF(condition, true_value, false_value)

1. Tạo bảng và dữ liệu

CREATE TABLE DemoTable (
    UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserName VARCHAR(20),
    PhotoLiked INT
);

INSERT INTO DemoTable (UserName, PhotoLiked) VALUES
('Chris', 57), ('David', 100), ('Mike', 68), ('Sam', 78);

2. Truy vấn IF

SELECT IF(PhotoLiked > 75, UserName, 'Likes are less') AS Result 
FROM DemoTable;

3. Kết quả

+------------------------------------------------+
| Result                                         |
+------------------------------------------------+
| Likes are less                                 |
| David                                          |
| Likes are less                                 |
| Sam                                            |
+------------------------------------------------+

Giải thích

  • PhotoLiked > 75 – Điều kiện.
  • UserName – Giá trị nếu TRUE.
  • 'Likes are less' – Giá trị nếu FALSE.

So sánh IF vs CASE

Mở rộng: IF lồng nhau

SELECT IF(PhotoLiked > 90, 'Viral',
       IF(PhotoLiked > 75, 'Popular',
       IF(PhotoLiked > 50, 'Average', 'Low'))) AS Status
FROM DemoTable;

Lưu ý

  • IF là hàm – dùng trong SELECT, WHERE, ORDER BY, SET...
  • Khác với câu lệnh điều khiển IF ... THEN ... ELSE ... END IF chỉ dùng trong Stored Procedure/Function/Trigger.
Đặc điểmIF()CASE WHEN
Số nhánh2 (True/False)Nhiều (WHEN...THEN...ELSE)
Độ phức tạp điều kiệnĐơn giảnPhức tạp, lồng nhau
Tiêu chuẩn SQLMySQL extensionANSI SQL
Hiệu suấtTương đươngTương đương