sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo seleccionar todos los registros de una tabla que no existen en otra tabla?

SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL

P :¿Qué está pasando aquí?

A :Conceptualmente, seleccionamos todas las filas de table1 y para cada fila intentamos encontrar una fila en table2 con el mismo valor para el name columna. Si no existe tal fila, simplemente dejamos la table2 parte de nuestro resultado vacío para esa fila. Luego restringimos nuestra selección seleccionando solo aquellas filas en el resultado donde la fila correspondiente no existe. Finalmente, ignoramos todos los campos de nuestro resultado excepto el name columna (la que estamos seguros que existe, de table1 ).

Si bien es posible que no sea el método con el mayor rendimiento posible en todos los casos, debería funcionar básicamente en todos los motores de bases de datos que intenten implementar ANSI 92 SQL