sql - 用于将两列合二为一的 SQL 查询
问题描述
我有一个比赛和分数表,看起来像这样
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
是我所知道的唯一结合表格的操作,但这里似乎是错误的工具。
要么CONCAT
或UNION
似乎是合理的,但这里哪个更可取?查询会是什么?
解决方案
看来你需要一个工会
select match_id, player1, player2 opponent, player1_score score
from my_table
union all
select match_id, player1, player2 , player2_score
from my_table
推荐阅读
- html - 使用 Bootstrap 4 垂直堆叠最后一个 DIV 以填充/适合容器的其余部分
- php - 插入正确数据时无法登录
- python - 在 PowerPoint 中编辑形状的位置
- python - 当同一行上有多个调用时,如何进入 PDB 中的特定可调用对象?
- c++ - C++ STL - 容器实现
- oracle - Oracle中的“过程名称IS”和“过程名称AS”有什么区别?
- vue.js - 在 nuxt 中从 webpack 中排除文件
- python - 从模块导入全局变量
- c++ - 如何使用 C++ 使用嵌套的 for 循环创建乘法表
- java - 如何在 Spring Cloud Contract 存根上执行 WireMock.verify() 操作?