【问题标题】:SQL Select omitting results from a sub-querySQL Select 省略子查询的结果
【发布时间】:2015-02-07 03:48:47
【问题描述】:

我有以下代码,单独运行时,会产生我期望的结果,但集体运行时不会返回任何结果:

SELECT SurveyUID FROM   tbSurvey AS tbS
WHERE  NOT EXISTS   
(SELECT tbS.SurveyUID
FROM         tbSurvey AS tbS INNER JOIN
                  tbSurveyElementCategory AS tbSEC ON tbS.SurveyUID = tbSEC.SurveyUID INNER JOIN
                  tbElementCategory AS tbEC ON tbSEC.ElementCategoryID = tbEC.ElementCategoryID
WHERE     (tbEC.ElementCategoryID = 75))

第一行返回 185 条记录,子查询返回 20 条记录作为第一个查询的子集。我正在尝试返回未出现在子查询中的 165 条记录。谢谢

【问题讨论】:

    标签: sql sql-server-2008 select join not-exists


    【解决方案1】:

    你忘了把 tbS.SurveyUID = tbS1.SurveyUID 条件

    试试这个:

    SELECT SurveyUID 
    FROM   tbSurvey AS tbS
    WHERE NOT EXISTS (SELECT tbS1.SurveyUID
                      FROM tbSurvey AS tbS1 
                      INNER JOIN tbSurveyElementCategory AS tbSEC ON tbS1.SurveyUID = tbSEC.SurveyUID 
                      INNER JOIN tbElementCategory AS tbEC ON tbSEC.ElementCategoryID = tbEC.ElementCategoryID
                      WHERE (tbEC.ElementCategoryID = 75) AND tbS.SurveyUID = tbS1.SurveyUID
                     )
    

    【讨论】:

      【解决方案2】:

      您的查询是错误的。你必须写:...WHERE SurveyUID NOT IN (...subquery...)。在您的查询中,您说“如果子查询没有结果,请给我所有 ID”,但它有结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-23
        • 2018-08-01
        • 1970-01-01
        • 2020-09-20
        • 1970-01-01
        • 1970-01-01
        • 2018-06-08
        相关资源
        最近更新 更多