tabela1 (identificação, nome)
tabela2 (identificação, nome)
Inquerir:
SELECT name
FROM table2
-- that are not in table1 already
fonte
tabela1 (identificação, nome)
tabela2 (identificação, nome)
Inquerir:
SELECT name
FROM table2
-- that are not in table1 already
SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
Q : O que está acontecendo aqui?
R : Conceitualmente, selecionamos todas as linhas table1
e, para cada linha, tentamos encontrar uma linha table2
com o mesmo valor para a name
coluna. Se não houver essa linha, deixamos a table2
parte do resultado em branco para essa linha. Em seguida, restringimos nossa seleção escolhendo apenas as linhas no resultado em que a linha correspondente não existe. Finalmente, ignoramos todos os campos do nosso resultado, exceto a name
coluna (a que temos certeza de que existe table1
).
Embora possa não ser o método mais eficiente possível em todos os casos, ele deve funcionar basicamente em todos os mecanismos de banco de dados que tentam implementar o ANSI 92 SQL
Você pode fazer
ou
Veja esta pergunta para três técnicas para realizar isso
fonte
Não tenho pontos de representação suficientes para votar na 2ª resposta. Mas eu tenho que discordar dos comentários na resposta superior. A segunda resposta:
É MUITO mais eficiente na prática. Não sei por que, mas estou com 800k + de registros e a diferença é tremenda com a vantagem dada à 2ª resposta postada acima. Apenas meus $ 0,02
fonte
Isso é pura teoria dos conjuntos que você pode obter com a
minus
operação.fonte
https://www.cloudways.com/blog/how-to-join-two-tables-mysql/
fonte
Cuidado com as armadilhas. Se o campo
Name
emTable1
conter nulos você está em surpresas. Melhor é:fonte
Aqui está o que funcionou melhor para mim.
Isso foi duas vezes mais rápido que qualquer outro método que tentei.
fonte
Você pode usar
EXCEPT
no mssql ouMINUS
no oracle, eles são idênticos de acordo com:http://blog.sqlauthority.com/2008/08/07/sql-server-except-clause-in-sql-server-is-similar-to-minus-clause-in-oracle/
fonte
Esse trabalho afiado para mim
fonte
Consulte a consulta:
Conceitualmente, seria: Buscando os registros correspondentes na subconsulta e, em seguida, na consulta principal, buscando os registros que não estão na subconsulta.
fonte
Vou repostar (já que ainda não sou legal o suficiente para comentar) na resposta correta ... caso alguém ache que seja necessário explicar melhor.
E eu vi a sintaxe do FROM precisando de vírgulas entre os nomes das tabelas no mySQL, mas no sqlLite parecia preferir o espaço.
O ponto principal é que quando você usa nomes de variáveis incorretos, isso deixa perguntas. Minhas variáveis devem fazer mais sentido. E alguém deve explicar por que precisamos de uma vírgula ou não.
fonte
Se você deseja selecionar um usuário específico
A
tent_npk
é a chave primária de um usuáriofonte