【问题标题】:SQL query with "not exists" not working“不存在”的 SQL 查询不起作用
【发布时间】:2013-09-25 03:12:56
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

    标签: sql where exists


    【解决方案1】:

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

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

    SQL Fiddle DEMO

    【讨论】:

    • 试过了,没有结果。 :(
    • 完美运行!谢谢!
    【解决方案2】:

    帕拉多的回答是正确的。我要补充一点,带有单个表的查询不能提供NOT EXISTS 的最佳演示。通常你的NOT EXISTS 子句会引用另一个表。

    例如,如果您想查询 idUsuario 值不存在于另一个表中的 usuario 表,您可以这样做:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 2013-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多