“不存在”的SQL查询无法正常工作

时间:2013-09-19 20:57:25

标签: sql where exists

我正在尝试使用一个简单的查询,但我没有到达任何地方。 目标是“学习”“不存在”的工作原理。 我有一个简单的表,其中“idUsuario”是用户的默认ID和名称。

    SELECT * FROM usuario
    WHERE NOT EXISTS (
        SELECT * FROM usuario
        WHERE u.idUsuario =16
    )

在这里,我试图从ID不是16的表中获取所有用户。但它只是得到了所有这些..我做错了什么?

提前致谢!

2 个答案:

答案 0 :(得分:6)

您应该将查询中的结果与子查询的结果结合起来,如下所示

 SELECT * FROM usuario u
    WHERE NOT EXISTS (
        SELECT * FROM usuario u1
        WHERE u1.idUsuario = u.idUsuario
        and u1.idUsuario =16
    )

SQL Fiddle DEMO

答案 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。