Hive_Hive WITH table_name AS genera una tabla temporal

Artículo de referencia:

https://blog.csdn.net/Abysscarry/article/details/81322669

 

Cuando escribimos SQL, a menudo necesitamos usar tablas temporales. Luego realizamos las operaciones posteriores en función de esta tabla temporal, pero crear una tabla temporal tiene un costo determinado.

 

Si esta tabla temporal no necesita guardarse, y lo siguiente solo necesita usarse un número limitado de veces, podemos usar el siguiente método.

 

Antecedentes:


Cuando escribimos algunas declaraciones SQL con estructuras relativamente complejas, una subconsulta puede reutilizarse en múltiples niveles y en múltiples lugares. En este momento, podemos usar la instrucción with as para aislarla, lo que mejora enormemente la legibilidad de SQL. Simplifique SQL ~
Nota: En la actualidad, Oracle, SQL Server, Hive, etc., todos son compatibles con el uso, pero mysql no lo admite.
 

 

1. Introducción


con lo que también se llama la parte subconsulta, primero defina un fragmento sql, el fragmento sql será utilizado por toda la declaración sql, para hacer que la declaración sql sea más legible, como parte de proporcionar datos, a menudo se usa en unión y otras colecciones En funcionamiento

con as es similar a una vista o tabla temporal, y se puede usar para almacenar parte de la instrucción SQL como un alias, la diferencia es que con as es una única vez, ¡y debe usarse con otro SQL!

La mayor ventaja es mejorar adecuadamente la legibilidad del código, y si la cláusula with se usará varias veces más tarde, esto puede simplificar enormemente el SQL; lo más importante: un análisis, múltiples usos, razón por la cual En términos de rendimiento, se logra el objetivo de "leer menos".


 

Segundo, usa

 

WITH t1 AS (
        SELECT *
        FROM carinfo
    ), 
    t2 AS (
        SELECT *
        FROM car_blacklist
    )
SELECT *
FROM t1, t2



Nota: Toda la consulta debe ser una consulta sql, es decir, no puede agregar un punto y coma después de la instrucción with as, de lo contrario, se informará un error.
 

 

3. Asuntos que requieren atención

 

1. La  cláusula with debe definirse antes de la instrucción select citada . La palabra clave with en el mismo nivel solo se puede usar una vez , y multiple solo se puede separar por una coma ; no puede haber una coma entre la última cláusula with y la siguiente consulta, solo a través de la derecha Los corchetes están separados y las consultas con cláusulas deben estar entre corchetes.

La siguiente redacción informará un error:

with t1 as (select * from carinfo)
with t2 as (select * from car_blacklist)
select * from t1,t2
with t1 as (select * from carinfo);
select * from t1

 

 

2. Si se define la cláusula with, pero no se sigue ninguna consulta de selección, se informará un error.

La siguiente redacción informará un error:

with t1 as (select * from carinfo)

 

Escritura correcta (no importa si no usa t1, puede elegirlo después):

with t1 as (select * from carinfo)
select * from carinfo

 

3. La consulta definida por la cláusula anterior se puede utilizar en la cláusula siguiente. ¡Pero las cláusulas with no se pueden anidar dentro de una cláusula with!

Escritura correcta:

with t1 as (select * from carinfo),
t2 as (select t1.id from t1)
select * from t2

 

519 artículos originales publicados · elogiados 1146 · 2,83 millones de visitas

Supongo que te gusta

Origin blog.csdn.net/u010003835/article/details/105399470
Recomendado
Clasificación