作者red0whale (red whale)
看板Database
標題[SQL ] MySQL中紀錄的重複次數從最多到最少的排名
時間Mon Aug 22 10:42:12 2016
資料庫名稱: MySQL
資料庫版本: (略)
內容/問題描述:
假設資料表`table`中有欄位`country`
其中一部份`country`的紀錄包含:`United States`、`Japan`、`China`、`Germany`和`Taiwan`
我想要將這5個`country`的紀錄以「紀錄的重複次數多寡」來做排序
請問我該怎麼做?
--
我上網找了一下有關「MySQL的紀錄重複出現次數」的SQL語法如下:
SELECT country, count( * ) AS count
FROM table
GROUP BY country
ORDER BY count DESC
但是它是針對「全部的紀錄」來做排序,但是我只想要上面這5個資料的排序即可
請問我該怎麼做才會比較好、最準確且比較省主機效能?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.138.104.124
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Database/M.1471833736.A.DCE.html
※ 編輯: red0whale (101.138.104.124), 08/22/2016 11:22:31
1F:→ johnney: where country like ? 08/22 12:02
謝謝
但我好像又遇到另外一個問題了:
先不要管前面那個問題,
如果說我今天拿這個「重複次數多寡」的排序來做為其他SQL語句的`ORDER BY`排序依據
我又該怎麼做?
因為就我所知的SQL語句裡的`ORDER BY`只有DESC和ASC這兩個排序功能
沒有其他的排法
所以這也是我頭疼的地方
故想問問該如何解決這另外一個問題
※ 編輯: red0whale (101.138.104.124), 08/22/2016 12:17:10
2F:推 streetbad: where country in ('a','b','c','d','e') 08/22 13:45
3F:推 JeremyJoung: 把這個排序後的結果 和其他TABLE作JOIN後再ORDER一次 08/23 16:02
4F:推 streetbad: 建個暫存資料表把第一次查詢的排序塞進去並給ID 08/23 16:54
5F:→ streetbad: 與想要查詢的其他資料表JOIN後 再依需求ORDER BY 08/23 16:55
6F:→ streetbad: 另外ORDER BY 應該可以 ORDER BY A DESC,B ASC之類的 08/23 16:56
7F:→ streetbad: 方式來進行不同欄位的排序動作 08/23 16:56
8F:推 shadowjohn: count(b.*) from .left outer join b.xx on a.id=b.id 09/13 14:45
9F:→ shadowjohn: order by counts desc 09/13 14:45