に参加私は2つのテーブルがあります。SQLクエリが参加し、INNERが
TableA TableB
id id
amt amt
idUser idTableA
をのは、以下のデータがテーブルAにあるとしましょう:
1 10 1
2 20 1
3 30 1
4 40 2
5 50 3
6 60 4
7 70 4
と、次のデータがあります表B:
1 10 1
2 20 2
3 21 2
4 51 5
5 70 7
すべてのフィールドはNULL可能ではありません。
私は(TableB.idTableAフィールドを介して)TABLEBへの「リンク」を持っていないテーブルA内のどの項目を知りたい場合は、私はこのクエリを行うことができます。
SELECT a.id, a.amt
FROM TableA a LEFT JOIN TableB b on b.idTableA = a.id
WHERE b.idTableA IS NULL
、それは次のように返します。
3 30
4 40
6 60
私は私が何ができるか、AMT値は、各テーブルで同一でないいる(TABLEBへのリンクを持っている)TableAの中のアイテムを知りたい場合は :
SELECT a.id, a.amt, b.amt
FROM TableA a INNER JOIN TableB b on b.idTableA = a.id
WHERE a.amt <> b.amt
、それが返されます:
2 20 21
5 50 51
今、私は次のないクエリをしたいと思います:TableAの中に自分のエントリの一部だけがあることを意味TableBのとのリンクを(持っているidUsersを返し idUserの場合、2つのテーブル間にリンクのないテーブルA内にいくつかのエントリが存在しなければならず)、少なくとも1つのエントリがリンクされているラインのうち2つのテーブル間で異なる量を有する。
私の例では、TableAの3番目のエントリが最初の条件(リンクのないエントリ)を満たし、金額が異なるエントリが存在するため(この値にリンクされているため)、idUser 1が返されますidTableA 2は、それが2つのテーブル間のリンクされないラインを有していないためにuserId 2が返されることはありません
それは持っていないので、
のuserId 3が返されない)テーブルBに21対テーブルAに20を量でありますTableBのリンクなしの表A
userId 4は返されません。リンクがない表Aでは1行、リンク付きの1行もあるので、リンク付きの行は2つの表間で同じ量になります。
だから本当にそれは2つの初期のクエリのミックスです...あなたの入力し、基本的な書式や言語のための私の謝罪のため
おかげで、私はこれが十分に明確であると思います:)
あなたのクエリは 'WHEREb.idTableA IS NULL'で終わるともTableAids 4と6を返すべきだと思います。 – therealmitchconnors