Wie wähle ich alle Zeilen in einer Tabelle aus, die in einer anderen nicht angezeigt werden?
Tabelle 1:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Tabelle 2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
Beispielausgabe für Zeilen in Tabelle1, die nicht in Tabelle2 enthalten sind:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Vielleicht sollte so etwas funktionieren:
SELECT * FROM Table1 WHERE * NOT IN (SELECT * FROM Table2)
mysql
sorting
unique
database-table
Christopher Rapcewicz
quelle
quelle
Sie müssen die Unterauswahl basierend auf einem Spaltennamen durchführen, nicht
*
.Wenn Sie beispielsweise ein
id
Feld haben, das beiden Tabellen gemeinsam ist, können Sie Folgendes tun:Weitere Beispiele finden Sie in der MySQL-Unterabfragesyntax .
quelle
EXISTS
wird dir helfen...quelle
Ein Standard-LEFT JOIN könnte das Problem lösen und sollte auch schneller sein , wenn die Felder beim Join indiziert sind
quelle
WHERE t2.Birthdate Is Null
stattAND t1.Birthdate = t2.Birthdate
?Table2
!Versuchen:
quelle
Versuchen Sie diese einfache Abfrage. Es funktioniert perfekt.
quelle
Dies hat bei mir in Oracle funktioniert:
quelle
quelle