Mysql 使用第二个表中的键将多行合并为单独的列

Mysql 使用第二个表中的键将多行合并为单独的列,mysql,Mysql,我有两张桌子 用户: int player_id varchar player_name int game_id int player_id1 int player_id2 游戏: int player_id varchar player_name int game_id int player_id1 int player_id2 我想做一个查询,将玩家id作为参数,并返回每个游戏的信息以及玩家的姓名。到目前为止,我掌握的情况如下: SELECT game_id, p

我有两张桌子

用户:

int player_id
varchar player_name
int game_id
int player_id1
int player_id2
游戏:

int player_id
varchar player_name
int game_id
int player_id1
int player_id2
我想做一个查询,将玩家id作为参数,并返回每个游戏的信息以及玩家的姓名。到目前为止,我掌握的情况如下:

SELECT 
    game_id, 
    player_id1, 
    player_id2, 
from GAMES, GAME_STATES 
where player_id1=@playerid or player_id2=@playerid
我遇到的问题是一个简单的方法,让它返回球员的名字和球员ID。返回的查询将有5列,其中一列是游戏id,两列代表每个玩家id,两列代表每个玩家的名字

我想到的一个解决方案是:

SELECT 
  game_id, 
  player_id1, 
  (select player_name from USERS where player_id=player_id1) as player_name1, player_id2, 
  (select player_name from USERS where player_id=player_id2) as player_name2, 
from GAMES, GAME_STATES 
where player_id1=@playerid or player_id2=@playerid
然而,这似乎需要对数据库进行大量额外的工作,因为每返回一行将有2个以上的查询。如果我必须这样做,我想知道在客户端请求名称作为第二个查询是否是一个更好的选择?然后,客户端可以创建一个唯一ID列表,并对所有ID执行一次查询。我不太担心延迟,因为客户端和服务器位于同一个数据中心


谢谢您的帮助。

从游戏中选择游戏id、u1.player\u name、u2.player\u name作为游戏内部加入用户作为y1上的u1.playerid=game.player\u id1内部加入用户作为u2上的u2.playedid=game.player\u id2其中player\u id1=@playerid或playerid=@playerid


该怎么做呢

我相信加入是为了那些比我更懂得如何解释的人?