¿Cómo seleccionar todas las filas de una tabla que no aparecen en otra?
Tabla 1:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Tabla 2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
Salida de ejemplo para filas en Table1 que no están en Table2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Quizás algo como esto debería funcionar:
SELECT * FROM Table1 WHERE * NOT IN (SELECT * FROM Table2)
mysql
sorting
unique
database-table
Christopher Rapcewicz
fuente
fuente
Debe realizar la subselección según el nombre de una columna, no
*
.Por ejemplo, si tuviera un
id
campo común a ambas tablas, podría hacer:Consulte la sintaxis de la subconsulta de MySQL para obtener más ejemplos.
fuente
EXISTS
Te ayudará...fuente
Una LEFT JOIN estándar podría resolver el problema y, si los campos en la combinación están indexados,
también debería ser más rápido
fuente
WHERE t2.Birthdate Is Null
lugar deAND t1.Birthdate = t2.Birthdate
?Table2
!Tratar:
fuente
Prueba esta sencilla consulta. Funciona perfectamente.
fuente
Esto funcionó para mí en Oracle:
fuente
fuente