2016-07-27 1 views
0

私が参加内側のためのSQL Serverのクエリを持っている...2つのテーブルの内部結合に参加しないすべてのレコードを検索しますか?

SELECT * 
FROM tableA 
INNER JOIN tableB on tableA.my_id = tableB.my_id 

は、どのように私はこの中で一致しなかったすべてのレコードが参加見つけるだろうか?

+0

どのテーブルからレコードを取得しますか? – kicken

+0

両方のテーブルのレコードが一致しないようにしたいと思います。 (私は非常にMSSQLに新しいです)。 – a1234

答えて

3

TABLEB FROM 2つの表を結合した後、WHERE句を使用して、各表の主キー値でNULLをチェックすることによって、一致しない行のみに結果をフィルタリングします。

全外は、全ての結合されたテーブルですべての行は、それらが一致しているか否か、含まれている参加します。

SELECT a.pk, b.pk 
FROM tableA a 
FULL JOIN tableB b ON a.pk=b.fk 
WHERE 
    a.pk IS NULL 
    OR b.pk IS NULL 
+0

Worked、ありがとう! – a1234

0
SELECT A2.* FROM TableA A2 
       WHERE A2.my_id NOT IN 
         (Select tableA.my_id FROM 
            tableA 
            inner join 
            tableB 
            on tableA.my_id = tableB.my_id) 

は、あなたが同様にあなたがUNION ALL 2つのクエリに応じて可能性があるテーブルのすべてのレコードをしたい場合は、別途表B

  • に一致しないレコードを照会するために、SELECT B2.* FROM TableB B2を開始上記を行うことができますテーブルのフィールド構造が同じか、選択したフィールドを指定する方法 - データで何をやっていますか?あなたがにFULL JOINを使用することができます
0

SELECT *
UNION(TABLEBからmy_id SELECT)NOT IN my_id ALL
SELECT *にtableA FROM(にtableAからmy_idを選択)NOT IN my_id

関連する問題