我有两个名为game和gameprogress
的表。 Gameprogress
有一个名为state
的列,用于描述进度。游戏通过id与gameprogress
相关。
可能的状态是:游戏进展中的1,3,4。
我想找到没有state = 1
且没有状态= 4的游戏。我已尝试过这样的事情:
select top 10 gp.gameid, count(gp.state) as dup
from gameprogress gp
join game g on g.id= gp.gameid
where g.gamestate != 2 and gp.state != 1
group by gp.gameid
having count(gp.state)>1
答案 0 :(得分:1)
您可以在CASE EXPRESSION
子句中使用HAVING
:
SELECT TOP 10 g.gameid
FROM game g
LEFT JOIN gameprogress gp
ON g.id= gp.gameid
GROUP BY g.gameid
HAVING COUNT(CASE WHEN gp.state = 3 THEN 1 END) = COUNT(*)