Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Select 如何从内部联接表中选择一个字段和其他字段的区别_Select_Distinct_Inner Join_Field - Fatal编程技术网

Select 如何从内部联接表中选择一个字段和其他字段的区别

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

我使用PHP和MySQL,并且 有两个表:

  • 表分数:有“用户id”和“分数”字段
  • 表用户:具有“用户id”和“用户名称”字段
人们玩游戏,然后在每次游戏结束时将用户id和分数存储在“分数”表中。在表score中,单个用户有许多行

我想要什么? 我想选择具有不同用户名的前10名玩家显示在列表中,那么正确的sql是什么?下面的代码现在是我当前的sql,但它并没有显示我想要的结果

  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