我有这个有效的查询:
SELECT id, SUM(points) AS points
FROM leaderboard
WHERE roundtime BETWEEN LOCALTIMESTAMP - INTERVAL '24 hours' AND LOCALTIMESTAMP
GROUP BY id ORDER BY points DESC LIMIT 25
它可能返回这样的东西:
id points
------------
15 430
17 278
16 92
但是,我不想在结果中包含 id,而是想将其替换为与 id 对应的用户名(来自 users 表)
用户表:
id username
-------------
15 Frank
16 Joe
17 Andy
这样第一个查询的结果是:
username points
----------------
Frank 430
Andy 278
Joe 92
我尝试使用子查询,但无法完全正常工作,而且它变得越来越乱。有什么好的方法吗?
最佳答案
你只需要一个 Plain JOIN 来做你需要的。不要使用子查询,它会使你的 SQL 比它需要的慢:
SELECT u.username, SUM(l.points) AS points
FROM leaderboard l
INNER JOIN yourUserTable u
ON l.id = u.ColumnNameForTheUserId
WHERE roundtime BETWEEN LOCALTIMESTAMP - INTERVAL '24 hours'
AND LOCALTIMESTAMP
GROUP BY u.username
ORDER BY points DESC
LIMIT 25
关于mysql - 将查询结果中的 id 外键替换为用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37506157/