SQL从桥表中获取包含两行的行

时间:2012-07-04 12:40:58

标签: sql postgresql

这个头衔可能措辞糟透了。我有一些PostgreSQL表。有一个桥表,也可以保存额外的数据,因此不是严格意义上的桥梁,但也是这样做的。它是这样的:

player_game
===========
player_game_id PK
player_id FK -> player
game_id FK -> game
other stuff.

我想编制一个包含我选择的两个玩家的所有这类game_ids的列表。

所以我可以找到例如玩家1234玩玩家9876的游戏。

游戏中可以有2到10名玩家。

2 个答案:

答案 0 :(得分:2)

select pg1.game_id from player_game pg1
inner join player_game pg2 on pg1.game_id = pg2.game_id
where pg1.player_id = 1234
and pg2.player_id = 9876
group by pg1.game_id -- or : AND  pg1.player_game_id < pg2.player_game_id

答案 1 :(得分:0)

您需要使用别名将表连接到自身。 (对于两个表)然后根据需要指定两个ID

 select *
 from player_game as A
 inner join player_game as B on A.game_id = B.game_id
 where A.player_id = '' and B.player_id = ''