[SQL ] MySQL中紀錄的重複次數從最多到最少的排名

看板Database (資料庫)作者 (red whale)時間8年前 (2016/08/22 10:42), 8年前編輯推噓4(405)
留言9則, 4人參與, 最新討論串1/1
資料庫名稱: 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://www.ptt.cc/bbs/Database/M.1471833736.A.DCE.html ※ 編輯: red0whale (101.138.104.124), 08/22/2016 11:22:31

08/22 12:02, , 1F
where country like ?
08/22 12:02, 1F
謝謝 但我好像又遇到另外一個問題了: 先不要管前面那個問題, 如果說我今天拿這個「重複次數多寡」的排序來做為其他SQL語句的`ORDER BY`排序依據 我又該怎麼做? 因為就我所知的SQL語句裡的`ORDER BY`只有DESC和ASC這兩個排序功能 沒有其他的排法 所以這也是我頭疼的地方 故想問問該如何解決這另外一個問題 ※ 編輯: red0whale (101.138.104.124), 08/22/2016 12:17:10

08/22 13:45, , 2F
where country in ('a','b','c','d','e')
08/22 13:45, 2F

08/23 16:02, , 3F
把這個排序後的結果 和其他TABLE作JOIN後再ORDER一次
08/23 16:02, 3F

08/23 16:54, , 4F
建個暫存資料表把第一次查詢的排序塞進去並給ID
08/23 16:54, 4F

08/23 16:55, , 5F
與想要查詢的其他資料表JOIN後 再依需求ORDER BY
08/23 16:55, 5F

08/23 16:56, , 6F
另外ORDER BY 應該可以 ORDER BY A DESC,B ASC之類的
08/23 16:56, 6F

08/23 16:56, , 7F
方式來進行不同欄位的排序動作
08/23 16:56, 7F

09/13 14:45, , 8F
count(b.*) from .left outer join b.xx on a.id=b.id
09/13 14:45, 8F

09/13 14:45, , 9F
order by counts desc
09/13 14:45, 9F
文章代碼(AID): #1NkcQ8tE (Database)
文章代碼(AID): #1NkcQ8tE (Database)