1

無効な refby (id に関連する) を取得できるクエリを作成しようとしています。次のデータベース構造を確認してください...

| id | acnumber  | refby |
+----+-----------+--------+
|  1 | ac01      | 2      |
+----+-----------+--------+
|  2 | ac02      | 1      |
+----+-----------+--------+
|  3 | ac03      | 5      |
+----+-----------+--------+

上記の表には値が 5 の ID がないことがわかるため、クエリは結果として 3 行目を返す必要があります。

私が試してみました...

SELECT * FROM tbl.members WHERE refby != (SELECT id FROM tbl.members WHERE id = refby)

しかし、これは正しい結果を与えていません。助けてください、ありがとう。

4

3 に答える 3

0

これを使用して試すことができますnot in:-

SELECT * FROM tbl.members WHERE refby not in  (SELECT id FROM members)
于 2013-08-18T16:53:39.877 に答える
0
SELECT * FROM members WHERE refby not in  (SELECT id FROM members)

これで問題が解決するはずです

于 2013-08-18T16:52:48.430 に答える
0

これは LEFT JOIN である必要があり、大きなテーブルでは NOT IN は遅くなります... id と refid が PRIMARY KEY または UNIQUE キー (データセット内で一意に読み取られる) であると仮定すると、このクエリは同じ結果を返すはずです。

SELECT
 *
FROM 
 members members1 
LEFT JOIN
 members members2
ON members1.id = members2.refby 
WHERE members2.id IS NULL

sqlfriddle http://sqlfiddle.com/#!2/05731/1を確認してください

于 2013-08-18T17:12:20.610 に答える