sql - 在postgresql中形成子查询

标签 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查询?

最佳答案

许多方法之一是使用 case 语句返回不是 team = 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

关于sql - 在postgresql中形成子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29881617/

相关文章:

php - 在 SQL 查询中传递大量值的最佳方法?

postgresql - 在 PostgreSQL 中按二元运算符分组

跨多个列的 PostgreSQL 唯一值

大表上的Mysql查询速度慢

sql - PostgreSQL 中的“WHERE”语法等同于 LEFT OUTER JOIN

python - 使用注释和聚合而不重复

python - 数据库表不是 JSON 可序列化的

c++ - 以与数据库无关的方式查询构建

sql - JOIN 和 INNER JOIN 之间的区别

c# - 有什么好的方法可以防止SQL注入(inject)?