【问题标题】:SQL query for joining two columns into one用于将两列合二为一的 SQL 查询
【发布时间】:2020-08-08 21:30:43
【问题描述】:

我有一个比赛和得分表,看起来像这样

match_id | player1 | player2 | player1_score | player2_score |
---------|---------|---------|---------------|---------------|
       1 |       1 |       2 |            30 |            50 |
       2 |       3 |       1 |            35 |            10 |
       3 |       1 |       4 |            40 |            20 |
       4 |       2 |       3 |            20 |            25 |
       5 |       4 |       2 |            65 |            15 |
       6 |       3 |       4 |            10 |            20 |

我想用单列中的分数进行查询

match_id | player | opponent | score |
---------|--------|----------|-------|
       1 |      1 |        2 |    30 |
       2 |      3 |        1 |    35 |
       3 |      1 |        4 |    40 |
       4 |      2 |        3 |    20 |
       5 |      4 |        2 |    65 |
       6 |      3 |        4 |    10 |
       1 |      2 |        1 |    50 |
       2 |      1 |        3 |    10 |
       3 |      4 |        1 |    20 |
       4 |      3 |        2 |    25 |
       5 |      2 |        4 |    15 |
       6 |      4 |        3 |    20 |

这相当于将表中的某些列与其他列连接:

match_id |  player | opponent |         score |
---------|---------|----------|---------------|
match_id | player1 |  player2 | player1_score |
match_id | player2 |  player1 | player2_score |

但我不确定合适的操作是什么。 join 是我所知道的唯一一个合并表的操作,但这里似乎是错误的工具。

CONCATUNION 似乎是合理的,但这里哪个更可取?查询会是什么?

【问题讨论】:

  • 您使用的是哪个 DBMS(MySQL、SQL Server、Oracle 等)?
  • 您正在寻找UNION ALL 和列别名。是否有必要按照您显示的顺序获得结果?因为这比单纯的 union all 查询要复杂一些。
  • RDBMS 是相关的,因为可能有一些方法可以做到这一点而无需扫描表两次,具体取决于您使用的是哪一个
  • @ThorstenKettner 顺序并不重要。

标签: sql union concat


【解决方案1】:

看来你需要一个联合

    select match_id, player1, player2 opponent, player1_score score
    from my_table 
    union all 
    select match_id, player1, player2 , player2_score 
    from my_table 

【讨论】:

    猜你喜欢
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    相关资源
    最近更新 更多