SQL选择省略子查询的结果

时间:2014-12-09 09:45:49

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

我有以下代码,当单独运行时,会生成我期望的结果,但是当集合运行时不返回任何内容:

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条记录。感谢

2 个答案:

答案 0 :(得分:2)

你忘了把 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
                 )

答案 1 :(得分:0)

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