我正在尝试使用一个简单的查询,但我没有到达任何地方。 目标是“学习”“不存在”的工作原理。 我有一个简单的表,其中“idUsuario”是用户的默认ID和名称。
SELECT * FROM usuario
WHERE NOT EXISTS (
SELECT * FROM usuario
WHERE u.idUsuario =16
)
在这里,我试图从ID不是16的表中获取所有用户。但它只是得到了所有这些..我做错了什么?
提前致谢!
答案 0 :(得分:6)
您应该将查询中的结果与子查询的结果结合起来,如下所示
SELECT * FROM usuario u
WHERE NOT EXISTS (
SELECT * FROM usuario u1
WHERE u1.idUsuario = u.idUsuario
and u1.idUsuario =16
)
答案 1 :(得分:3)
Parado的回答是正确的。我想补充说,使用单个表的查询不能提供NOT EXISTS
的最佳演示。通常,您的NOT EXISTS
子句会引用另一个表。
例如,如果您想查询其他表中不存在idUsuario值的usuario表,您可以这样做:
SELECT * FROM usuario u
WHERE NOT EXISTS (
SELECT * FROM usuarioExclude x
WHERE x.idUsuario = u.idUsuario
)
usuarioExclude表可以包含您希望从结果中排除的任何值,例如示例中的16。