6

我正在尝试使用一个简单的查询,但我无处可去。目标是“学习”“不存在”是如何工作的。我有一个简单的表,其中“idUsuario”作为用户的默认 ID 和名称。

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

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

提前致谢!

4

2 回答 2

10

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

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

SQL 小提琴演示

于 2013-09-19T20:58:42.960 回答
3

帕拉多的答案是正确的。我要补充一点,带有单个表的查询并不能提供NOT EXISTS. 通常您的NOT EXISTS子句会引用另一个表。

例如,如果您想查询 idUsuario 值不存在于另一个表中的 usuario 表,您可以执行以下操作:

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

usuarioExclude 表可以包含您希望从结果中排除的任何值,例如示例中的 16。

于 2013-09-19T21:08:02.037 回答