es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Seleccionar registros de una tabla que no existan en otra tabla, manteniendo los registros de una tabla donde hay múltiples.

Tengo 2 tablas TABLE1 y TABLE2 en Hadoop Impala. TABLE2 tiene algunos registros de TABLE1. Lo que quiero es seleccionar todos los registros de TABLE1 que no existen en TABLE2 y luego combinarlos para obtener una tabla que contenga todos los registros de TABLE2 y los registros de TABLE1 que no están en TABLE2. Entonces codifiqué esto:

String sq = "SELECT TABLE1.name, TABLE1.surname, TABLE1.id FROM TABLE1"
            + "LEFT JOIN TABLE1"
            + "EN TABLE1.id <> TABLE2.id";
Tags:  ,

Answer

  1. Avatar for davy.ai

    El código SQL proporcionado en la pregunta no es correcto ya que contiene un error de sintaxis.

    Para lograr el resultado deseado de seleccionar todos los registros de TABLE1 que no existen en TABLE2 y luego combinárselos con TABLE2, el código SQL correcto sería:

    SELECT nombre, apellido, id
    FROM TABLE1
    WHERE id NOT IN (SELECT id FROM TABLE2)
    UNION
    SELECT nombre, apellido, id
    FROM TABLE2
    

    Explicación:

    • La primera declaración SELECT selecciona todas las columnas de TABLE1 donde el valor id no está presente en TABLE2. El operador NOT IN se utiliza para excluir los valores coincidentes.
    • El operador UNION se utiliza para combinar los resultados de la primera declaración SELECT con las columnas coincidentes de TABLE2.

    Este código SQL recuperará todos los registros de TABLE1 que no existen en TABLE2 y luego los combinará con TABLE2, lo que resultará en una tabla que contiene todos los registros de ambas tablas.

Comments are closed.