如何从INNER JOIN表中选择一个字段和其他字段的DISTINCT

时间:2011-10-06 13:36:52

标签: select distinct inner-join field

我使用PHP和MySQL和我 有2个表:

  • 表格得分:包含字段'user_id'和'得分'
  • 表用户:包含字段'user_id'和'user_name'

人们玩游戏然后存储user_id并在每次游戏结束时在表'得分'中得分。表得分中的单个用户有很多行。

我想要什么?   我想选择具有不同user_name的前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

这有什么错误?

2 个答案:

答案 0 :(得分:2)

这有用吗? (未经测试)

    select username, max(score) as maxscore 
from score, user
 where score.userid=user.userid and score>0 
group by username 
order by maxscore desc

答案 1 :(得分:0)

以下sql将返回按其最佳得分排序的前10名得分最高的玩家(不是得分前10名,而是前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