Biểu thức CASE của MySQL là một phần của hàm luồng điều khiển cung cấp cho chúng ta viết logic if-else hoặc if-then-else cho một truy vấn. Biểu thức này có thể được sử dụng ở bất kỳ nơi nào sử dụng chương trình hoặc truy vấn hợp lệ, chẳng hạn như mệnh đề SELECT, WHERE, ORDER BY, v.v.
Biểu thức CASE xác thực các điều kiện khác nhau và trả về kết quả khi điều kiện đầu tiên là đúng. Khi điều kiện được đáp ứng, nó dừng duyệt và đưa ra kết quả. Nếu nó không tìm thấy bất kỳ điều kiện nào đúng, nó sẽ thực hiện khối khác. Khi không tìm thấy khối khác, nó sẽ trả về giá trị NULL. Mục tiêu chính của câu lệnh CASE của MySQL là xử lý nhiều câu lệnh IF trong mệnh đề SELECT
Chúng ta có thể sử dụng câu lệnh CASE theo hai cách như sau
1. Câu lệnh CASE đơn giản
Phương pháp đầu tiên là lấy một giá trị và khớp nó với câu lệnh đã cho, như hình bên dưới
cú pháp
Nó trả về kết quả khi phép so sánh giá_trị đầu tiên trở thành đúng. Nếu không, nó sẽ trả về mệnh đề khác
Thí dụ
đầu ra
Sau khi thực hiện thành công truy vấn trên, chúng ta sẽ nhận được đầu ra sau. Ở đây, chúng ta có thể thấy rằng cột bộ phận chứa dạng đầy đủ thay vì dạng rút gọn
Câu lệnh Trường hợp MySQL cho phép bạn kiểm tra một giá trị cho nhiều điều kiện trong một truy vấn SQL. Trong bài viết này, chúng ta sẽ xem xét cách sử dụng câu lệnh tình huống trong MySQL
Cách viết Case Statement trong MySQL
Đây là cú pháp cho câu lệnh MySQL Case
select case when condition1 then value1 when condition2 then value2 ... end, column2, column3, ... from table_name
Trong truy vấn trên, bạn cần chỉ định tên bảng. Ngoài ra, bạn cần đề cập đến từng điều kiện mà bạn muốn kiểm tra một cột nhất định, trong câu lệnh case… end. Bạn cũng cần đề cập đến giá trị được gán cho cột nếu mỗi điều kiện là đúng, tức là cho từng trường hợp
Cũng đọc. Cách sử dụng Hợp nhất trong MySQL
Ví dụ trường hợp MySQL
Chúng ta hãy xem xét một số ví dụ về hàm MySQL Case bên dưới
Giả sử bạn có doanh số bảng sau [id, order_date, số tiền]
mysql> create table sales[id int, order_date date, amount int]; mysql> insert into sales[id, order_date, amount] values[1, '2021-01-01', 150], [1, '2021-01-02', 250], [1, '2021-01-03', 100], [1, '2021-01-04', 150], [1, '2021-01-05', 350]; mysql> select * from sales; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2021-01-01 | 150 | | 1 | 2021-01-02 | 250 | | 1 | 2021-01-03 | 100 | | 1 | 2021-01-04 | 150 | | 1 | 2021-01-05 | 350 | +------+------------+--------+
tiền thưởng đọc. Cách truy vấn cột JSON trong MySQL
Đây là truy vấn SQL để nhóm các giá trị số lượng thành 3 nhóm – nhỏ hơn bằng 100, 100-300 và lớn hơn 300
mysql> select id, order_date, case when amount100 and amount=300 then 'greater than 300' end as bucket from sales; +------+------------+------------------------+ | id | order_date | bucket | +------+------------+------------------------+ | 1 | 2021-01-01 | 101 to 300 | | 1 | 2021-01-02 | 101 to 300 | | 1 | 2021-01-03 | less than equal to 100 | | 1 | 2021-01-04 | 101 to 300 | | 1 | 2021-01-05 | greater than 300 | +------+------------+------------------------+
tiền thưởng đọc. Cách tránh chèn các bản ghi trùng lặp trong MySQL
Xin lưu ý, nếu không có câu lệnh case nào thỏa mãn giá trị, thì câu lệnh CASE sẽ trả về NULL. Đây là một ví dụ
mysql> select id, order_date, case when amount100 and amount300 then 'greater than 300' end as bucket from sales; +------+------------+------------------+ | id | order_date | bucket | +------+------------+------------------+ | 1 | 2021-01-01 | 100 to 300 | | 1 | 2021-01-02 | 100 to 300 | | 1 | 2021-01-03 | NULL | | 1 | 2021-01-04 | 100 to 300 | | 1 | 2021-01-05 | greater than 300 | +------+------------+------------------+
Trong ví dụ trên, câu lệnh CASE trả về NULL cho 100, vì nó không thỏa mãn bất kỳ điều kiện nào
Câu lệnh MySQL Case rất hữu ích để tạo phân phối tần số và nhóm giá trị
Bạn cũng có thể sử dụng điều kiện WHERE để áp dụng câu lệnh tình huống trên một tập hợp con các hàng
select id, order_date, case when amount100 and amount=300 then 'greater than 300' end as bucket from sales WHERE ;
Trường hợp MySQL trong Ubiq
Công cụ báo cáo của Ubiq hỗ trợ tất cả các truy vấn SQL ở trên và giúp bạn dễ dàng hình dung các kết quả SQL theo nhiều cách khác nhau. Đây là truy vấn CASE SQL được đề cập ở trên, trong Ubiq
Cần một công cụ báo cáo cho MySQL? . Thử nó ngay hôm nay