Mysql
 sql >> база данни >  >> RDS >> Mysql

Общ табличен израз в MySQL

Общите таблични изрази (CTE) ви позволяват лесно да пишете сложни SQL заявки в MySQL. В тази статия ще разгледаме какво представлява общият израз на таблица в MySQL и как да пишем CTE в MySQL.


Какво е общ табличен израз

Common Table Expression е именуван набор от резултати, чийто обхват е ограничен до SQL заявката, в която е дефиниран и използван. Тя е подобна на извлечена таблица, но не се съхранява като обект и може да се самопрепраща, за разлика от извлечените таблици. В резултат на това CTE осигурява по-добра производителност от извлечените таблици в MySQL.

Бонус четене:Как да изчислим маржа в MySQL


Общ табличен израз в MySQL

Ето синтаксиса на израза за обща таблица в MySQL.

WITH cte_name (column_list) AS (     
      query 
)  
SELECT * FROM cte_name;

В горната заявка трябва да посочите името на CTE, SQL заявката, чийто резултат трябва да бъде препратен с CTE име. Моля, обърнете внимание на броя на колоните в column_list трябва да са същите като тези във вашата заявка .

Нека разгледаме пример за общ табличен израз (CTE).

Бонус четене:Как да получите най-продавания продукт с SQL заявка

Да кажем, че имате продажби (идентификатор, дата_на_поръчка, сума) таблица.

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 |
 +------+------------+--------+

Ето CTE, за да изберете само записи за продажби, които имат сума>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 |
 +------+------------+--------+

В горния CTE ние посочваме заявката SELECT за филтриране на редове с количество>200 вътре в клаузата WITH.

Бонус за четене:Как да използвате израза CASE в MySQL

Моля, имайте предвид, че можете да използвате CTE с изрази SELECT, UPDATE, INSERT и DELETE. Ето синтаксиса за същото.

WITH … SELECT …
WITH … UPDATE …
WITH … DELETE …

Също така можете да използвате CTE като подзаявка, както е показано по-долу

SELECT … WHERE id IN (WITH … SELECT …);
SELECT * FROM (WITH … SELECT …) AS temporary_table;

Ако използвате резултата от оператор SELECT като вход за изрази CREATE/INSERT/REPLACE, тогава можете също да използвате клауза WITH в него. Ето няколко примера,

CREATE TABLE … WITH … SELECT …
CREATE VIEW … WITH … SELECT …
INSERT … WITH … SELECT …
REPLACE … WITH … SELECT …
DECLARE CURSOR … WITH … SELECT …
EXPLAIN … WITH … SELECT …

Бонус за четене:Вземете няколко броя с различни условия в MySQL


Общ табличен израз в Ubiq

Инструментът за отчитане на Ubiq поддържа базирани на CTE SELECT заявки и улеснява визуализирането на SQL резултатите по различни начини. Той също така ви позволява да създавате табла за управление и диаграми от резултатите от MySQL заявки. Ето горната CTE заявка в Ubiq.

Всъщност, след като изпълните заявката, можете просто да щракнете върху тип визуализация, за да начертаете резултата в диаграма.

Нуждаете се от инструмент за отчитане за MySQL? Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!

  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, където името на таблицата е променлива

  2. MySQL Fire Trigger както за вмъкване, така и за актуализиране

  3. Как да попълним дупките в полетата за автоматично увеличение?

  4. Как работи функцията FROM_BASE64() в MySQL

  5. Изберете MySQL база данни на Linux чрез командния ред