mysql - MySQL 统一列
问题描述
我有一个如下所示的表:
ID | id_player1 | id_player2 |
---|---|---|
1 | 2 | 1 |
2 | 3 | 2 |
我想知道是否有办法使它类似于:
ID | player_selected | 对手 |
---|---|---|
1 | 2 | 1 |
2 | 2 | 3 |
我有我的基本 MySQL 查询:
SELECT * FROM `pairings`
WHERE id = $id AND id_player1 = $idPlayer OR id_player2 = $idPlayer
我不习惯对 mysql 进行太多查询,而且我对它们的了解不多,如果可能的话。
解决方案
我会这样做:
SELECT id, id_player1 AS player_selected, id_player2 AS opponent
FROM pairings
WHERE id_player1 = $idPlayer
UNION
SELECT id, id_player2, id_player1
FROM pairings
WHERE id_player2 = $idPlayer;
这样做的一个优点是它利用了 id_player1 和 id_player2 上的索引。
AS
(在第二个 SELECT 上不需要定义列别名,因为在第一个 SELECT 中定义的别名无论如何都具有优先权。)
推荐阅读
- linux - 无法在 Raspberry Pi 上为 python 3.9.6 安装模块
- ssl - 如何在没有 RPM 的情况下为 HAProxy 安装依赖项。或者,如何在使用源文件时设置 HAProxy
- django - 显示与外键相关的项目
- hibernate - JBOSS事务同步问题
- python - SoundCloud Scraping 问题(soundcloud-lib 错误;HTTPError: HTTP Error 403: Forbidden)
- ssl - 从我的个人签名证书和个人密码计算 CA.key 文件
- c - 在 Windows 上将文件映射到 C 中的虚拟内存
- reactjs - 使用 oidc-react 设置 Cookie
- awk - awk 查找两个字符串之间的行,其中一个是可变的
- css - Shopify 造型问题