我有一个记分板表。
userID|userName|weekID|pickID|Score
--------------------------------------------
1 |Bob | 1 | Den | 10
1 |Bob | 2 | Clev | 20
2 |Adam | 1 | Car | 12
2 |Adam | 2 | Den | 30
我想按所有周的总和对表格进行排序 我想要的结果就是这个。
userID|userName|weekID|pickID|Score
--------------------------------------------
2 |Adam | 1 | Car | 12
2 |Adam | 2 | Den | 30
1 |Bob | 1 | Den | 10
1 |Bob | 2 | Clev | 20
Adams条目位于最前面,因为他在第1周和第2周的得分总和 是最高的。整个表需要以这种方式排序,所以当我在循环中吐出HTML时,行将按顺序排序。
答案 0 :(得分:2)
您需要获得每个用户的总分,并按降序排序,并且还可以选择一个或多个其他列。我认为weekID
是一个很好的辅助排序。
您可以JOIN
根据userID
,GROUP BY
主要表格userID
和weekID
以及{{1 }} SUM
ed table的JOIN
列,以便能够正确Score
。
ORDER
如果您不需要返回的数据中的总数,则可以将SELECT s.userid, s.username, s.weekid, s.pickid, s.score, SUM(a.score) totalscore
FROM scoreboard s
INNER JOIN scoreboard a ON a.userid = s.userid
GROUP BY s.userid, s.weekid
ORDER BY totalscore DESC, s.weekid;
直接放在SUM
子句中。
ORDER BY
我认为您的数据比此更加标准化,因此请相应调整。
我还想象你计划的运作时间不仅仅是一个赛季,所以你最终也可能需要对其进行过滤。
答案 1 :(得分:0)
" GROUP BY"是关键。以下应该有效:
SELECT userID, SUM(Score) as TotalScore
FROM teh_table
GROUP BY userID
ORDER BY TotalScore DESC;