Mysql 使用update语句筛选sql行
我正在尝试编写一个查询,它可以得到无效的refby(与id相关),请检查以下数据库结构Mysql 使用update语句筛选sql行,mysql,Mysql,我正在尝试编写一个查询,它可以得到无效的refby(与id相关),请检查以下数据库结构 | id | acnumber | refby | +----+-----------+--------+ | 1 | ac01 | 2 | +----+-----------+--------+ | 2 | ac02 | 1 | +----+-----------+--------+ | 3 | ac03 | 5 | +----+-----
| id | acnumber | refby |
+----+-----------+--------+
| 1 | ac01 | 2 |
+----+-----------+--------+
| 2 | ac02 | 1 |
+----+-----------+--------+
| 3 | ac03 | 5 |
+----+-----------+--------+
正如您可以发现的,上表中并没有值为5的id,所以查询必须返回第三行作为结果
我试过
SELECT * FROM tbl.members WHERE refby != (SELECT id FROM tbl.members WHERE id = refby)
但这并没有给出正确的结果,请帮助,谢谢
SELECT * FROM members WHERE refby not in (SELECT id FROM members)
这应该可以解决您的问题您可以使用以下方法进行尝试:-
这应该是一个左连接,而不是在大型表上运行缓慢。。。假设id和refid是主键或唯一键(在数据集中读取唯一键),则此查询应返回相同的结果
SELECT
*
FROM
members members1
LEFT JOIN
members members2
ON members1.id = members2.refby
WHERE members2.id IS NULL
检查sqlfriddle
SELECT
*
FROM
members members1
LEFT JOIN
members members2
ON members1.id = members2.refby
WHERE members2.id IS NULL