Select 如何从内部联接表中选择一个字段和其他字段的区别
我使用PHP和MySQL,并且 有两个表:Select 如何从内部联接表中选择一个字段和其他字段的区别,select,distinct,inner-join,field,Select,Distinct,Inner Join,Field,我使用PHP和MySQL,并且 有两个表: 表分数:有“用户id”和“分数”字段 表用户:具有“用户id”和“用户名称”字段 人们玩游戏,然后在每次游戏结束时将用户id和分数存储在“分数”表中。在表score中,单个用户有许多行 我想要什么? 我想选择具有不同用户名的前10名玩家显示在列表中,那么正确的sql是什么?下面的代码现在是我当前的sql,但它并没有显示我想要的结果 SELECT DISTINCT * FROM score as t1 INNER JOIN user AS t
- 表分数:有“用户id”和“分数”字段
- 表用户:具有“用户id”和“用户名称”字段
SELECT DISTINCT * FROM score as t1
INNER JOIN user AS t2 ON t1.user_id=t2.user_id
WHERE score>0
ORDER BY t1.score DESC
LIMIT 10
这是什么错误 下面的sql将返回按其最佳得分排序的前10名得分最高的玩家(不是前10名得分,而是前10名玩家) 这行吗?(未测试)
很抱歉,我想要不同的前10名球员,即使删除[]结果仍然不是前10名球员。它显示了多行高分重复用户。括号用于区分“用户”表和名为“用户”的系统表。但在mysql中,这可能没有必要。我更新了我的答案,以更好地适应您的问题。我现在无法测试它,它会执行吗?谢谢viper34j,你的新代码的答案是“不显示分数”。它只显示用户名。从Kent修改的正确代码是
选择用户名,max(score)作为来自score的maxscore,user where score。user\u id=user.user\u id和score>0按用户名分组按maxscore desc限制10
SELECT
u.user_name,
max(s.score)
FROM
score as s
INNER JOIN [user] AS u
ON s.user_id = u.user_id
WHERE
score > 0
GROUP BY
u.user_name
ORDER BY
2 DESC
LIMIT 10
select username, max(score) as maxscore
from score, user
where score.userid=user.userid and score>0
group by username
order by maxscore desc