0

(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 部分

例如,如果约翰有以下结果

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无论时间如何,都将最好的结果放在首位

有任何想法吗?

4

1 回答 1

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";
于 2013-10-25T16:52:24.673 回答