Recibo el error

[Código: 10002, Estado SQL: 42000]
Error al compilar la declaración: FAILED: SemanticException [Error 10002]: Línea 11:60 Referencia de columna no válida 'FIELD3'

Al ejecutar la siguiente consulta:

CREATE TABLE NEW_TABLE 
AS
    SELECT 
        T1.*,
        T2.*,
        T3.*
    FROM 
        OLD_TABLE1 T1
    LEFT JOIN 
        OLD_TABLE2 T2 ON (T1.FIELD1 = T2.FIELD1)
    LEFT JOIN 
        OLD_TABLE3 T3 ON (T1.FIELD3 = T3.FIELD3);

¿Cuál es el problema potencial de la consulta anterior? Verifiqué dos veces que FIELD3 existe en OLD_TABLE1 y OLD_TABLE3.

0
wltay04 23 ene. 2021 a las 10:05

1 respuesta

La mejor respuesta

Un problema importante que tiene es que los nombres de columna duplicados en la tabla. Como mínimo, las condiciones JOIN introducirán duplicados. También puede haber otros duplicados.

Enumere las columnas que desea explícitamente :

CREATE TABLE NEW_TABLE AS
    SELECT . . .    -- list column names explicitly
    FROM OLD_TABLE1 T1 LEFT JOIN
         OLD_TABLE2 T2
         ON T1.FIELD1 = T2.FIELD1 LEFT JOIN
         OLD_TABLE3 T3
         ON T1.FIELD3 = T3.FIELD3;

Este problema puede ocurrir con CREATE TABLE. Dicho esto, es más común con las consultas de agregación.

0
Gordon Linoff 23 ene. 2021 a las 13:36