Py学习  »  DATABASE

在mysql中,如何从一个条件不同的表中选择两个不同的值?

Sasha Grievus • 5 年前 • 1493 次点击  

我有两张桌子:

userdata

guidUser  username  
-----------------
12        plr1        
13        plr2
14        plr3
15        plr4

games

id  guidUser1  guidUser2
-------------------------
1       12        13
2       15        14

我想根据玩家的guid从同一个userdata表中选择他们的名字。

我想得到的结果是:

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 

但是我怎样才能得到第二个用户名?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43716
 
1493 次点击  
文章 [ 3 ]  |  最新文章 5 年前
ADyson
Reply   •   1 楼
ADyson    6 年前

您可以通过第二次加入USER数据表来实现这一点。

注意,我使用了现代的内部连接语法,使其更清楚地说明了连接子句适用于什么。我建议您应该尽可能使用现代语法,使您的代码更加清晰。

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
Fahmi
Reply   •   2 楼
Fahmi    6 年前

您可以尝试使用USER数据表的多个实例的连接

 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
Tim Biegeleisen
Reply   •   3 楼
Tim Biegeleisen    6 年前

你可以参加两次。每个连接到 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;

enter image description here

Demo