mysql DISTINCT top 5 去重


如果表字段是:id, author_id, version, rank, ……
假設表數據如下

30,1,100,200……

29,2,100,190……

28,3,100,180……

27,4,100,170……

26,5,100,160……

25,6,100,150……

24,7,100,140……

23,1,100,130……

22,3,100,120……

需求:取最新排名的前五個author_id

正確的結果:1,2,3,4,5

首先想到的查詢語句如下:
select distinct author_id from article order by version desc, rank desc limit 5;

大部分情況是正確的。但是對於上面的測試數據,mysql的輸出結果爲:2,4,5,6,7

很奇怪不知道結果爲啥如此。

改查前10條

select distinct author_id from article order by version desc, rank desc limit 10;

mysql的輸出結果爲:2,4,5,6,7,1,3,……

根據結果分析,distinct與order by結合後的排序,author_id出現在了id最小的位置上了。

然後我嘗試了以下語句,輸出結果就是正確的。

select distinct author_id from ( select author_id from article order by rank desc ) tb limit 5

問題解決。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章