2016-06-19 57 views
-1

我想按特定列排序組。MySQL GROUP BY並按列排序組

我試過如下:

SELECT u.level, max(u.score),n.nick 
FROM database.userdata u, database.nicks n 
WHERE n.user = u.id 
GROUP BY level 

但這只是打印最高得分,而不是爲這個分數的用戶名..

我怎樣才能解決這個問題?

謝謝!

+0

您的查詢提到兩個表,但不提供用於連接在一起的任何條件。這意味着MySQL將考慮兩個表中所有可能的行組合。 *當然*你可以在網上找到一些使用'JOIN'和'GROUP BY'的例子。 –

回答

1

試試這個方法:

SELECT n.nick, u1.score, u1.level 
FROM database.nicks AS n 
JOIN database.userdata AS u1 ON n.user = u1.id 
JOIN (
    SELECT level, max(score) AS score 
    FROM database.userdata 
    GROUP BY level 
) AS u2 ON u1.level = u2.level AND u1.score = u2.score