我有一张这样的表:
我需要一个查询才能返回那些只有State = 21的ProjectID。 即我只想要ProjectID 2& 5。
我不希望这些记录带有ProjectID 1,3,4& 6,因为在那种情况下,状态也等于其他数字
答案 0 :(得分:3)
推理就像
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
您还可以使用MIN
,SUM
或AVG
检查具有相同效果的State
的值(因为它应该是唯一的值)。< / p>
答案 2 :(得分:1)
select ProjectID,count(State) from table group by ProjectID having count(state)=1;