首页 > 解决方案 > 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 进行太多查询,而且我对它们的了解不多,如果可能的话。

标签: 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 中定义的别名无论如何都具有优先权。)


推荐阅读