OK、あなたのコメントに基づいて、私はこれがあなたが望むものだと思う:
SELECT DISTINCT user.firstname, user.lastname, user.userid
FROM user u
LEFT JOIN staff s ON (s.userid = u.userid)
WHERE (s.userid is null) AND (u.type = 'Staff')
左がそれらのために、一致するユーザーIDとを持っているユーザテーブル(左表)内のすべてのレコードを検索します参加それはしない。句
SELECT *
FROM user u
LEFT JOIN staff s ON (s.userid = u.userid)
WHERE (s.userid is null)
が戻ってくるWHERE
ので修正クエリ
SELECT *
FROM user u
LEFT JOIN staff s ON (s.userid = u.userid)
は、部分的に追加
1 - A - Staff 1 - 11111
2 - B - Staff 2 - 22222
3 - C - Customer NULL NULL NULL
4 - D - Customer NULL NULL NULL
5 - E - Staff NULL NULL NULL
6 - F - Staff NULL NULL NULL
を返します:
3 - C - Customer NULL NULL NULL
4 - D - Customer NULL NULL NULL
5 - E - Staff NULL NULL NULL
6 - F - Staff NULL NULL NULL
そして最後に、完全なクエリが
SELECT *
FROM user u
LEFT JOIN staff s ON (s.userid = u.userid)
WHERE (s.userid is null) AND (u.type = 'Staff')
が戻ってくる戻ってくる:
5 - E - Staff NULL NULL NULL
6 - F - Staff NULL NULL NULL
注:ユーザーテーブルをと仮定すると一意である、 'DISTINCT' は冗長です。
どのデータベースエンジンを使用していますか? – Jamie
@ウィル・オク、私は修正された質問を反映するために私の答えを編集しました。 – dgw