SELECT t1.name
FROM table1 t1
LEFT JOIN table2 t2 ON t2.name = t1.name
WHERE t2.name IS NULL
P :O que esta acontecendo aqui?
A :Conceitualmente, selecionamos todas as linhas de
table1
e para cada linha tentamos encontrar uma linha em table2
com o mesmo valor para o name
coluna. Se não houver tal linha, apenas deixamos a table2
parte do nosso resultado vazio 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 o name
coluna (a que temos certeza que existe, de table1
). Embora possa não ser o método de melhor desempenho possível em todos os casos, ele deve funcionar basicamente em todos os mecanismos de banco de dados que tentam implementar o SQL ANSI 92