检查表是否具有特定的行值

时间:2016-11-07 08:01:22

标签: sql-server tsql

我有两个名为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

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(*)