(PHP中的SQL查询)
$sqlAS = "SELECT * FROM results, players WHERE results.codeplayer=players.codeplayer GROUP BY results.codeplayer ORDER BY points Desc, time Asc ";
我希望查询生成一个列表,每个玩家只有最好的结果(每个玩家的数据库都有几个结果)。
它工作得很好,除了我得到每个玩家得分的最佳结果,但没有按最佳时间排序,如SQL的SORT BY部分所反映
例如,如果John有以下结果
400 points 5:00 time // in minutes
400 points 4:00 time
500 points 5:00 time
500 points 4:00 time
300 points 2:00 time
我得到了
John - 500 points - 5:00
但我需要
John - 500 - 4:00
对于John来说,这是最好的结果。
我猜测"ORDER BY points Desc, time Asc"
会负责这一点。
似乎GROUP BY
无论时间如何都将最佳结果放在点数
有什么想法吗?
答案 0 :(得分:0)
试试这个(假设你的列有这样的名字,因为你没有提供你的表结构):
$sqlAS = "SELECT p.*, r.codeplayer, r.points, min(r.`time`)
FROM results r JOIN players p ON r.codeplayer=p.codeplayer
JOIN (select codeplayer, max(points) as points from results) res_max
on (res_max.codeplayer = r.codeplayer AND res_max.points = r.points)
GROUP BY r.codeplayer";