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
| Đặc điểm | IF() | CASE WHEN |
|---|---|---|
| Số nhánh | 2 (True/False) | Nhiều (WHEN...THEN...ELSE) |
| Độ phức tạp điều kiện | Đơn giản | Phức tạp, lồng nhau |
| Tiêu chuẩn SQL | MySQL extension | ANSI SQL |
| Hiệu suất | Tương đương | Tương đương |