Como selecionar todas as linhas de uma tabela que não aparecem na outra?
Tabela 1:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Mesa 2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Tia | Carrera | 1975-09-18 |
| Nikki | Taylor | 1972-03-04 |
+-----------+----------+------------+
Exemplo de saída para linhas na Tabela 1 que não estão na Tabela 2:
+-----------+----------+------------+
| FirstName | LastName | BirthDate |
+-----------+----------+------------+
| Yamila | Diaz | 1972-03-04 |
+-----------+----------+------------+
Talvez algo assim deva funcionar:
SELECT * FROM Table1 WHERE * NOT IN (SELECT * FROM Table2)
mysql
sorting
unique
database-table
Christopher Rapcewicz
fonte
fonte
Você precisa fazer a subseleção com base no nome de uma coluna, não
*
.Por exemplo, se você tivesse um
id
campo comum a ambas as tabelas, poderia fazer:Consulte a sintaxe da subconsulta do MySQL para mais exemplos.
fonte
EXISTS
Ajudará você...fonte
Um LEFT JOIN padrão pode resolver o problema e, se os campos na junção forem indexados,
também deve ser mais rápido
fonte
WHERE t2.Birthdate Is Null
vez deAND t1.Birthdate = t2.Birthdate
?Table2
!Experimentar:
fonte
Experimente esta consulta simples. Funciona perfeitamente.
fonte
Isso funcionou para mim no Oracle:
fonte
fonte