【问题标题】:SQL get rows containing two rows from bridge tableSQL 从桥表中获取包含两行的行
【发布时间】:2012-07-04 20:57:28
【问题描述】:

这个标题的措辞可能很糟糕。我有一些 PostgreSQL 表。有一个桥表,它也包含额外的数据,所以严格来说不是一个桥,但也以这种方式运行。它是这样的:

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

我想编译一个包含我选择的两个玩家的所有此类 game_id 的列表。

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

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

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:
    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
    

    【讨论】:

      【解决方案2】:

      您需要使用别名将表连接到自身。 (对于两个表),然后根据需要指定两个 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 = ''
      

      【讨论】:

      • 似乎[A][B] 别名不适用于PostgreSQL。
      猜你喜欢
      • 2019-01-12
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 2018-02-08
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多