我正在尝试编写一个可以获得无效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)
但是这没有给出正确的结果,请帮助,谢谢。
答案 0 :(得分:0)
SELECT * FROM members WHERE refby not in (SELECT id FROM members)
这应该可以解决您的问题
答案 1 :(得分:0)
您可以使用not in
尝试此操作: -
SELECT * FROM tbl.members WHERE refby not in (SELECT id FROM members)
答案 2 :(得分: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