sql >> Base de Datos >  >> RDS >> Mysql

Expresión de tabla común en MySQL

Las expresiones de tabla común (CTE) le permiten escribir fácilmente consultas SQL complejas en MySQL. En este artículo, veremos qué es Common Table Expression en MySQL y cómo escribir CTE en MySQL.


¿Qué es la expresión de tabla común?

Common Table Expression es un conjunto de resultados con nombre cuyo ámbito se limita a la consulta SQL en la que se define y utiliza. Es similar a una tabla derivada, pero no se almacena como un objeto y puede hacer referencia a sí misma, a diferencia de las tablas derivadas. Como resultado, CTE brinda un mejor rendimiento que las tablas derivadas en MySQL.

Lectura adicional:Cómo calcular el margen en MySQL


Expresión de tabla común en MySQL

Esta es la sintaxis de la expresión de tabla común en MySQL.

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

En la consulta anterior, debe especificar el nombre de CTE, la consulta SQL cuyo resultado debe referenciarse utilizando el nombre de CTE. Tenga en cuenta el número de columnas en column_list deben ser los mismos que los de su consulta .

Veamos un ejemplo de expresión de tabla común (CTE).

Lectura adicional:Cómo obtener el producto más vendido mediante SQL Query

Digamos que tiene ventas (id, order_date, cantidad) mesa.

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

Aquí hay un CTE para seleccionar solo registros de ventas que tengan una cantidad> 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 |
 +------+------------+--------+

En el CTE anterior, especificamos la consulta SELECT para filtrar filas con una cantidad> 200 dentro de la cláusula WITH.

Lectura adicional:Cómo usar la instrucción CASE en MySQL

Tenga en cuenta que puede usar CTE con declaraciones SELECT, UPDATE, INSERT y DELETE. Aquí están las sintaxis para el mismo.

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

Además, puede usar un CTE como subconsulta, como se muestra a continuación

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

Si usa el resultado de una declaración SELECT como entrada para las declaraciones CREATE/INSERT/REPLACE, entonces también puede usar la cláusula WITH en ella. Estos son algunos ejemplos,

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

Lectura adicional:obtenga múltiples recuentos con diferentes condiciones en MySQL


Expresión de tabla común en Ubiq

La herramienta de informes de Ubiq admite consultas SELECT basadas en CTE y facilita la visualización de resultados SQL de diferentes maneras. También le permite crear paneles y gráficos a partir de los resultados de consultas de MySQL. Aquí está la consulta CTE anterior en Ubiq.

De hecho, después de ejecutar la consulta, simplemente puede hacer clic en un tipo de visualización para trazar el resultado en un gráfico.

¿Necesita una herramienta de informes para MySQL? Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!