1

これはややこしいので、目標を段階的に説明します。以下は、私が取り組んでいるテーブルです ( First TableSecond Table、およびThird Table )。username最初に、2 番目のテーブルの が最初のテーブルに存在するかどうかを確認する必要があります。存在しない場合は、共通のないものを削除します。username

結果は次のようになります (George はFirst Tableに共通のユーザー名がないため除外されました)。

user_id | username
5423    | Bob
43      | Vicky

次に、上記の前回の結果と3 番目の表を比較して検証したいと思います。私の目標は、上記の前の結果から、 Third Tableuser_id AND usernameに共通の行があるかどうかを確認することです。ある場合は、その行を除外し、一意のもののみを取得します。

5423 | Bob 3 番目のテーブルにはまだ存在しないため、全体的な結果は次のようになります 。

全体的な結果:

user_id | username
5423    | Bob

最初のテーブル:

| username
| Bob
| Jessie
| Vicky

2 番目のテーブル:

user_id | username
5423    | Bob
123     | Georgie
43      | Vicky

3 番目のテーブル:

user_id | username
1       | Luke
54      | Stephenie
43      | Vicky
4

2 に答える 2

1
SELECT  b.*
FROM    FirstTable a
        INNER JOIN SecondTable b
            ON  a.username = b.username
        LEFT JOIN ThirdTable c
            ON  b.user_ID = c.user_ID 
WHERE   c.user_ID IS NULL

最初の結合ではINNER JOIN、条件に一致するレコードのみが結果リストに含まれるように使用されます。2 番目の結合は、一致する行があるかどうかに関係なく、左側のLEFT JOINテーブルのすべてのレコードが結果リストに表示されるように使用します。一致しない行には、右側の表の列に値があります。NULL

最終結果で一致しないレコードのみを取得する必要があるため、右側のテーブルで値WHEREをフィルター処理する句が必要です。NULL

于 2013-10-14T01:59:10.420 に答える
0

これを試して:

SELECT  b.*
FROM    FirstTable a
        INNER JOIN SecondTable b
            ON  a.username = b.username
        LEFT JOIN ThirdTable c
            ON  b.user_ID = c.user_ID 
WHERE   b.`username` <> c.`username`
于 2013-10-14T05:20:48.067 に答える