2015-04-26 91 views
0

下面是显示匹配的匹配表(这里的数字指团队ID)。在postgres中形成子查询sql

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; 

与上述我可以能够得到针对以下(I)所示的2播放的比赛,但我需要1,5,3在单个列中所示(II)

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

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

有可能使用sql查询吗?

回答

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

试试这个。案例statment可以做的伎俩很多

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