Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Biểu thức bảng phổ biến trong MySQL

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!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL DELETE FROM với truy vấn con là điều kiện

  2. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Debian 5 (Lenny)

  3. mysqli_fetch_array () mong muốn tham số 1 là mysqli_result, boolean được đưa vào

  4. Cách làm tròn Dấu thời gian trong MySQL

  5. Làm việc với con trỏ SQL