對mysql數據表中的某一字段進行排名
1.原始的表數據如下圖。done_seconds為完成的時間,需求為根據該字段來對每條數據進行排名。
2.輸入以下SQL語句:
SELECT?A.*,@rank:=@rank+1?AS?pm?FROM?(SELECT?*?FROM?task_news_user_done_list?ORDER?BY?done_seconds)?A,?(SELECT??@rank:=0)?B
3.執行該條語句后,查詢出來的結果中,加入了pm字段。該字段的值就是根據done_seconds進行排序的結果。注意,升序,降序的問題。
4.除了單個字段外,還可以對平均值進行排序。如對上表中相同user_email的done_seconds的平均值進行排序,可用以下sql語句:
SELECT?A.*,@rank:=@rank+1?AS?pm? FROM? (SELECT?user_email,?AVG(done_seconds)?AS?done_seconds?FROM?task_news_user_done_list?GROUP?BY?user_email?ORDER?BY?done_seconds)?A,?(SELECT??@rank:=0)?B
5.排序后結果如下圖。此時的排名就是所有相同user_email的done_seconds進行的平均值排名。
6.當然還可以根據需要加入where等限制條件。如下圖。
覺得有用的點下贊。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END