Jak zaznaczyć wszystkie wiersze w jednej tabeli, które nie pojawiają się w innej?
Tabela 1:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Tabela 2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
Przykładowe dane wyjściowe dla wierszy w tabeli 1, których nie ma w tabeli 2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Może coś takiego powinno działać:
SELECT * FROM Table1 WHERE * NOT IN (SELECT * FROM Table2)
mysql
sorting
unique
database-table
Christopher Rapcewicz
źródło
źródło
Musisz dokonać podselekcji na podstawie nazwy kolumny, a nie
*
.Na przykład, jeśli masz
id
pole wspólne dla obu tabel, możesz wykonać:Więcej przykładów można znaleźć w składni podzapytania MySQL .
źródło
EXISTS
pomoże Ci...źródło
Standardowe LEFT JOIN mogłoby rozwiązać problem, a jeśli pola na złączeniu są indeksowane,
powinno również działać szybciej
źródło
WHERE t2.Birthdate Is Null
zamiastAND t1.Birthdate = t2.Birthdate
?Table2
!Próbować:
źródło
Spróbuj tego prostego zapytania. Działa doskonale.
źródło
To zadziałało dla mnie w Oracle:
źródło
źródło