我有一张这样的表:
game_id | score
---------------
1 | 500
2 | 1000
3 | 1500
现在,考虑到game_id
,我想知道在一个查询中有多少其他游戏得分较低。
因此,当game_id
= 1时,我希望2
为结果。
我本能地想先运行一个查询来检索score
= 1的game_id
,然后运行一个简单的select count(*) where...
,但我不确定如何完成
我使用的是postgres 9.6。
答案 0 :(得分:3)
你基本上只需在where子句中使用子查询,并在子查询中传递game_id,就像这样:
select count (game_id) from table where score < (select score from table where game_id = 1)
这背后的逻辑是引擎将评估内部选择,返回单个值作为结果,然后使用所述值评估外部选择