2011-12-16 11 views
1

2つのテーブルがあり、Table1とTable2を呼び出します。 Table1の列はid、name、col3です。 テーブル2には、カラムid、name、col3があります。 表2にない、IDと名前の両方(条件を満たすために) のすべてのレコードをTable1から抽出したいとします。 はsql - sqlのdouble condition check

+0

私はどこの名前がす​​べき名を確認することも必要、IDとしてdbo.Table1 NOT IN(表2から選択同上) FROM dbo.Table1.Track_Name AS名 をいくつかのこと SELECT dbo.Table1.IDを試してみましたまた同時にである – Shah

+0

あなたの質問にそれを加えなさい –

答えて

1

は以下を支援していないために、どのように:

SELECT 
    Table1.ID, 
    Table1.name, 
    Table1.col3, 
    Table2.ID 
FROM 
    Table2 RIGHT JOIN Table1 ON (Table2.name = Table1.name) AND (Table2.ID = Table1.ID) 
WHERE 
    Table2.ID Is Null; 
+0

利益がない。これは私の最初の試みだった – Shah

+0

私はうまく働いた私は実際のクエリでnullである書いていなかった – Shah

+0

クール - 答えがあなたのために働いたならそれは受け入れた。 – Martin

1

どう

SELECT t1.* 
FROM Table1 t1 
LEFT OUTER JOIN Table2 t2 
    ON t1.id = t2.id AND t1.name = t2.name 
WHERE t2.id IS NULL 
+0

クエリは実行されません UNION、INTERSECTまたはEXCEPT演算子を使用して結合されたすべてのクエリは、ターゲットリストに等しい数の式を持つ必要があります。 – Shah

1

...これについて、私はあなたが他に存在しない値(ID、名前)が必要だと思います表。

SELECT t1.* 
FROM Table1 t1 
LEFT JOIN Table2 t2 
    ON t1.id <> t2.id AND t1.name <> t2.name 
WHERE t2.id is null 
UNION 
SELECT t2.* 
FROM Table2 t2 
LEFT JOIN Table1 t1 
    ON t1.id <> t2.id AND t1.name <> t2.name 
WHERE t1.id is null 
+0

クエリは実行されません – Shah