Tìm hiểu lệnh CASE trong MySQL
Trong MySQL, lệnh CASE là một cấu trúc điều kiện linh hoạt cho phép bạn thực hiện các phép so sánh và trả về giá trị dựa trên kết quả của các điều kiện đó. Cấu trúc của lệnh CASE cho phép bạn xác định một hoặc nhiều điều kiện, và cho phép xác định hành động cụ thể khi một điều kiện nhất định được đáp ứng.
Cú pháp của lệnh CASE trong MySQL#
Lệnh CASE đơn giản
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END
Trong đó:
condition1,condition2, ... là các điều kiện có thể đúng hoặc sai.result1,result2, ... là các giá trị trả về tương ứng với mỗi điều kiện khi nó đúng.default_resultlà giá trị mặc định trả về khi không có điều kiện nào đúng (không bắt buộc).
Lệnh CASE với điều kiện kiểu biểu thức
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END
Lệnh CASE trong câu lệnh SELECT
Bạn có thể sử dụng lệnh CASE trong câu lệnh SELECT để tính toán các giá trị phức tạp dựa trên các điều kiện khác nhau:
SELECT column_name, CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE default_result END AS alias_name FROM table_name;
Ví dụ về sử dụng lệnh CASE trong MySQL#
- Lệnh CASE đơn giản:
SELECT order_id, CASE WHEN total_amount > 1000 THEN 'High Value' WHEN total_amount > 500 THEN 'Medium Value' ELSE 'Low Value' END AS order_value_category FROM orders;
Trong ví dụ này, CASE sẽ đánh giá giá trị của cột total_amount và trả về các nhãn phân loại cho giá trị đơn hàng dựa trên các điều kiện được xác định.
- Lệnh CASE kết hợp với hàm tính toán:
SELECT product_name, unit_price, CASE WHEN unit_price < 50 THEN unit_price * 0.9 WHEN unit_price >= 50 AND unit_price < 100 THEN unit_price * 0.8 ELSE unit_price * 0.7 END AS discounted_price FROM products;
Trong ví dụ này, CASE sử dụng các điều kiện để tính toán giá giảm giá dựa trên unit_price của sản phẩm.
- Sử dụng
CASEvới các loại kết hợp khác:
SELECT employee_id, first_name, last_name, salary, CASE WHEN salary >= 10000 THEN 'High Salary' WHEN salary >= 5000 AND salary < 10000 THEN 'Medium Salary' ELSE 'Low Salary' END AS salary_category, CASE WHEN gender = 'M' THEN 'Male' WHEN gender = 'F' THEN 'Female' ELSE 'Unknown' END AS gender FROM employees;
Trong ví dụ này, CASE được sử dụng để phân loại nhân viên dựa trên mức lương và giới tính.
Lệnh CASE là một công cụ mạnh mẽ trong MySQL cho phép bạn thực hiện các phân nhóm, tính toán giá trị dựa trên nhiều điều kiện khác nhau trong câu lệnh SQL. Nó giúp bạn xử lý và truy xuất dữ liệu một cách linh hoạt và hiệu quả.