SQL Query仅获取另一列中只有1个值的行

时间:2011-04-29 08:36:10

标签: sql

我有一张这样的表:

Sample Table

我需要一个查询才能返回那些只有State = 21的ProjectID。 即我只想要ProjectID 2& 5。

我不希望这些记录带有ProjectID 1,3,4& 6,因为在那种情况下,状态也等于其他数字

3 个答案:

答案 0 :(得分:3)

推理就像

  • 在子选择中,选择状态= 21
  • 的所有ProjectID
  • 在外部选择中,仅使用HAVING子句保留那些只有状态= 21的ProjectID

SQL声明

SELECT  ProjectID
FROM    table t1
        INNER JOIN (
          SELECT  ProjectID
          FROM    table
          WHERE   state = 21
        ) t2 ON t2.ProjectID = t1.ProjectID
GROUP BY
        ProjectID
HAVING  COUNT(*) = 1        

答案 1 :(得分:2)

选择具有单个状态值的所有项目,顺便说一下,('值')等于指定的值:

SELECT   ProjectID
FROM     atable
GROUP BY ProjectID
HAVING   COUNT(*) = 1
   AND   MAX(State) = @State

您还可以使用MINSUMAVG检查具有相同效果的State的值(因为它应该是唯一的值)。< / p>

答案 2 :(得分:1)

select ProjectID,count(State) from table group by ProjectID having count(state)=1;