我有两个表:
userdata
guidUser username
-----------------
12 plr1
13 plr2
14 plr3
15 plr4
games
id guidUser1 guidUser2
-------------------------
1 12 13
2 15 14
我想根据同一个用户数据表从他们的guid选择他们的名字。
我想要获得的结果是:
id guidUser1 username guidUser2 username2
--------------------------------------------
1 12 plr1 13 plr2
2 15 plr4 14 plr3
如果值只有我可以做到的
SELECT g.id, g.guidUser1, u.username, g.guidUser2 from games g, userdata u WHERE g.guidUser1=u.guidUser1
但是我如何获得第二个用户名'username2'?
答案 0 :(得分:4)
您可以尝试以下操作-使用多个userdata表实例的连接
SELECT g.id, g.guidUser1, u.username, g.guidUser2 u1.username as username2
from
games g inner join userdata u on g.guidUser1=u.guidUser
inner join userdata u1 on g.guidUser2=u1.guidUser
答案 1 :(得分:2)
您可以通过再次连接到userdata表来做到这一点。
注意,我已经使用了现代的INNER JOIN语法来使join子句适用于什么更加清楚。我建议您应该尽可能使用现代语法,以使您的代码更清晰,更干净。
SELECT
g.id,
g.guidUser1,
u1.username AS username1,
g.guidUser2,
u2.username AS username2
FROM
games g
INNER JOIN userdata u1
ON g.guidUser1 = u.guidUser
INNER JOIN userdata u2
ON g.guidUser2 = 2.guidUser
答案 2 :(得分:2)
您可以加入两次。每次userdata
表的联接都会引入一个用户名:
SELECT
g.id,
g.guidUser1,
u1.username,
g.guidUser2,
u2.username AS username2
FROM games g
INNER JOIN userdata u1
ON g.guidUser1 = u1.guidUser
INNER JOIN userdata u2
ON g.guidUser2 = u2.guidUser;