如何显示mySQL中指向同一表的两个不同列的值?
我有一个足球联赛的“进球”表。 我的表格包含“进球球员”和“进球助攻”,如下所示:如何显示mySQL中指向同一表的两个不同列的值?,mysql,Mysql,我有一个足球联赛的“进球”表。 我的表格包含“进球球员”和“进球助攻”,如下所示: Select idgoal, goal_player, goal_assist from myDB.goal LIMIT 3; +--------+-------------+-------------+ | idgoal | goal_player | goal_assist | +--------+-------------+-------------+ | 1 | 14 |
Select idgoal, goal_player, goal_assist from myDB.goal LIMIT 3;
+--------+-------------+-------------+
| idgoal | goal_player | goal_assist |
+--------+-------------+-------------+
| 1 | 14 | 15 |
| 2 | 16 | 0 |
| 3 | 17 | 18 |
+--------+-------------+-------------+
goal_player和goal_assist下的ID均指我的“玩家”表中的特定玩家。为了以可编辑的方式呈现我的结果,我必须替换实际名称的ID,因此我正在做:
SELECT idgoal, player.player_nickname as goal_player, goal_assist
FROM myDB.goal
JOIN player
ON goal_player = player.idplayer LIMIT 3;
+--------+-------------+-------------+
| idgoal | goal_player | goal_assist |
+--------+-------------+-------------+
| 1 | Maxi | 15 |
| 2 | El Loco | 0 |
| 3 | El Bebe | 18 |
+--------+-------------+-------------+
我不能同时为目标球员和目标助攻做这件事,因为这意味着同一个球员同时完成目标和助攻,所以我所做的是用第一个连接创建一个视图,然后用第一个视图创建第二个视图,替换“目标助攻”
我的工作很有魅力,直到我不得不对拥有比赛id和22名球员而不是这2名球员的球队做同样的事情
那么,当两列都指向同一个表时,如何用原始表中的值替换ID呢 您正在寻找两个连接。连同别名:
SELECT g.idgoal, p.player_nickname as goal_player,
pa.player_nickname as assist_player
FROM myDB.goal g JOIN
player p
ON g.goal_player = p.idplayer LET JOIN
player pa
ON g.goal_assist = pa.idplayer
LIMIT 3;
注:
- 所有表格都有别名
- 所有列引用都是“限定”的,这意味着它们引用列所在的表
- 你需要两个连接
- 第二个连接是
,用于处理目标没有“辅助”球员的情况左连接
SELECT
idgoal,
(SELECT player_nickname FROM player WHERE player.idplayer = goal_player) as `goal_player_name`,
(SELECT player_nickname FROM player WHERE player.idplayer = goal_assist) as `goal_assist_name`,
FROM myDB.goal
请注意,没有订单的限制是相当没有意义的。工作非常完美,现在在大订单上实现它。谢谢