Comment sélectionner toutes les lignes d'une table qui n'apparaissent pas sur une autre?
Tableau 1:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Tableau 2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
Exemple de sortie pour les lignes de Table1 qui ne sont pas dans Table2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Peut-être que quelque chose comme ça devrait fonctionner:
SELECT * FROM Table1 WHERE * NOT IN (SELECT * FROM Table2)
mysql
sorting
unique
database-table
Christopher Rapcewicz
la source
la source
Vous devez effectuer la sous-sélection en fonction d'un nom de colonne, pas
*
.Par exemple, si vous aviez un
id
champ commun aux deux tables, vous pourriez faire:Reportez-vous à la syntaxe de la sous-requête MySQL pour plus d'exemples.
la source
EXISTS
va vous aider...la source
Une jointure gauche standard pourrait résoudre le problème et, si les champs de jointure sont indexés,
devrait également être plus rapide
la source
WHERE t2.Birthdate Is Null
place deAND t1.Birthdate = t2.Birthdate
?Table2
!Essayer:
la source
Essayez cette simple requête. Cela fonctionne parfaitement.
la source
Cela a fonctionné pour moi dans Oracle:
la source
la source