web-dev-qa-db-ja.com

内部結合クエリの反対

誰かが私がこのようなscernerioのsqlを書くのを手伝うことができます:

Table 1

2 columns: ID, Name

Table 2

2 columns: ID, Name

テーブル2にないテーブル1の名前をクエリに表示したいので、テーブル2にあるテーブル1のすべての名前を結果クエリとして除外します。名前ではなくIDをフィルタリングに使用します。

これは私がやろうとしていることで私を助けます。前もって感謝します

34
Nick LaMarca
Select * from table1
left join table2 on table1.id = table2.id
where table2.id is null
54
Andrew

これは、left join...is nullバージョンよりもパフォーマンスが高いはずです。比較については、 here および here を参照してください。

select t1.id, t1.name
    from table1 t1
    where not exists(select null from table2 t2 where t2.id = t1.id)
25
Joe Stefanelli

このクエリを使用

select
t1.*
from table1 t1
left outer join table2 t2
on t1.id=t2.id
where t2.id is null

これは、t1のすべてをt2に存在するものに結合することで機能します。 where句は、t2に存在しないすべてのレコードを除外します。

16
DForck42
SELECT Table1.ID, Table1.Name, Table2.ID 
FROM Table1 LEFT OUTER JOIN Table2 ON Table1.ID = Table2.ID 
WHERE Table2.ID IS NULL 

それでいいと思う。

3
Matt
SELECT * FROM table1
WHERE table2.id NOT IN (SELECT id FROM table2)
0
Mojgan Mazouchi