Biểu thức bảng chung (CTE) cho phép bạn dễ dàng viết các truy vấn SQL phức tạp trong MySQL. Trong bài viết này, chúng ta sẽ xem xét Biểu thức bảng thông dụng trong MySQL là gì và cách viết CTE trong MySQL.
Biểu thức bảng chung là gì
Biểu thức bảng chung là một tập hợp kết quả được đặt tên có phạm vi giới hạn trong truy vấn SQL mà nó được định nghĩa và sử dụng. Nó tương tự như một bảng dẫn xuất nhưng nó không được lưu trữ dưới dạng một đối tượng và có thể tự tham chiếu, không giống như các bảng dẫn xuất. Do đó, CTE cung cấp hiệu suất tốt hơn các bảng dẫn xuất trong MySQL.
Phần thưởng đọc:Cách tính tiền ký quỹ trong MySQL
Biểu thức bảng phổ biến trong MySQL
Đây là cú pháp của biểu thức bảng phổ biến trong MySQL.
WITH cte_name (column_list) AS ( query ) SELECT * FROM cte_name;
Trong truy vấn trên, bạn cần chỉ định tên của CTE, truy vấn SQL mà kết quả của nó sẽ được tham chiếu bằng cách sử dụng tên CTE. Xin lưu ý, số lượng cột trong column_list phải giống với những gì trong truy vấn của bạn .
Hãy để chúng tôi xem xét một ví dụ về biểu thức bảng phổ biến (CTE).
Phần thưởng Đọc:Cách Nhận Sản phẩm Bán chạy nhất bằng Truy vấn SQL
Hãy để chúng tôi nói rằng bạn có doanh số bán hàng (id, order_date, số lượng) bảng.
mysql> create table sales(id int, order_date date, amount int); mysql> insert into sales(id, order_date, amount) values(1, '2021-01-01', 200), (2, '2021-01-02', 250), (3, '2021-01-03', 220), (4, '2021-01-04', 230), (5, '2021-01-05', 210), (6, '2021-01-06', 100), (7, '2021-01-07', 120), (8, '2021-01-08', 150), (9, '2021-01-09', 180), (10, '2021-01-10', 200); mysql> select * from sales; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2021-01-01 | 200 | | 2 | 2021-01-02 | 250 | | 3 | 2021-01-03 | 220 | | 4 | 2021-01-04 | 230 | | 5 | 2021-01-05 | 210 | | 6 | 2021-01-06 | 100 | | 7 | 2021-01-07 | 120 | | 8 | 2021-01-08 | 150 | | 9 | 2021-01-09 | 180 | | 10 | 2021-01-10 | 200 | +------+------------+--------+
Đây là CTE để chỉ chọn các hồ sơ bán hàng có số lượng> 200.
with test_cte as ( select id,order_date,amount from sales where amount>200 ) select * from test_cte; +------+------------+--------+ | id | order_date | amount | +------+------------+--------+ | 1 | 2021-01-01 | 200 | | 2 | 2021-01-02 | 250 | | 3 | 2021-01-03 | 220 | | 4 | 2021-01-04 | 230 | | 5 | 2021-01-05 | 210 | | 10 | 2021-01-10 | 200 | +------+------------+--------+
Trong CTE ở trên, chúng tôi chỉ định truy vấn SELECT để lọc các hàng có số tiền> 200 bên trong mệnh đề WITH.
Phần thưởng Đọc:Cách sử dụng câu lệnh CASE trong MySQL
Xin lưu ý, bạn có thể sử dụng CTE với các câu lệnh SELECT, UPDATE, INSERT và DELETE. Đây là các cú pháp tương tự.
WITH … SELECT … WITH … UPDATE … WITH … DELETE …
Ngoài ra, bạn có thể sử dụng CTE làm truy vấn con, như được hiển thị bên dưới
SELECT … WHERE id IN (WITH … SELECT …); SELECT * FROM (WITH … SELECT …) AS temporary_table;
Nếu bạn sử dụng kết quả của câu lệnh SELECT làm đầu vào cho câu lệnh CREATE / INSERT / REPLACE, thì bạn cũng có thể sử dụng mệnh đề WITH trong đó. Dưới đây là một số ví dụ,
CREATE TABLE … WITH … SELECT … CREATE VIEW … WITH … SELECT … INSERT … WITH … SELECT … REPLACE … WITH … SELECT … DECLARE CURSOR … WITH … SELECT … EXPLAIN … WITH … SELECT …
Phần thưởng đã đọc:Nhận được nhiều số lượng với các điều kiện khác nhau trong MySQL
Biểu thức bảng phổ biến trong Ubiq
Công cụ Báo cáo Ubiq hỗ trợ các truy vấn CHỌN dựa trên CTE và giúp dễ dàng hình dung kết quả SQL theo các cách khác nhau. Nó cũng cho phép bạn tạo trang tổng quan và biểu đồ từ kết quả truy vấn MySQL. Đây là truy vấn CTE ở trên trong Ubiq.
Trên thực tế, sau khi chạy truy vấn, bạn có thể chỉ cần nhấp vào một loại trực quan hóa để vẽ kết quả trong biểu đồ.
Cần một công cụ báo cáo cho MySQL? Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!