在postgres sql中形成子查询

时间:2015-04-26 18:21:21

标签: sql postgresql

下面是灯具表,其中显示了与之对战的比赛(这里的数字是指团队ID)。

   team_1 | team_2
 ----+--------+--------
        2 |      3
        4 |      5
        1 |      2
        4 |      3
        1 |      4
        2 |      5

我需要获取针对第2队的比赛,这应该是1,5,3是否有任何方式查询可以帮助组合team_1和team_2并返回1,5,3。我试过了

select * from fixtures where team_1  = 2 or team_2 = 2;

以上我可以得到下面显示的2对比(I),但我需要单列中的1,5,3,如(II)所示

(I) | team_1 | team_2
   +--------+--------
   |      2 |      3
   |      1 |      2
   |      2 |      5

(II) teams
    -----
     3
     1
     5

是否可以使用sql查询?

2 个答案:

答案 0 :(得分:2)

许多方法中的一种方法是使用case语句返回不属于团队= 2的列:

select case when team_1 = 2 then team_2 else team_1 end as opposing_team
from fixtures where team_1  = 2 or team_2 = 2;

这将返回:

opposing_team
3
1
5

答案 1 :(得分:1)

试试这个。案件陈述可以做到这一点

select Case when team_1 = 2 then team_2 ELSE team_1 END
    from fixtures where 2 in  (team_2,team_1)