看板 Database 關於我們 聯絡資訊
資料庫名稱: 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
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
streetbad: where country in ('a','b','c','d','e') 08/22 13:45
JeremyJoung: 把這個排序後的結果 和其他TABLE作JOIN後再ORDER一次 08/23 16:02
streetbad: 建個暫存資料表把第一次查詢的排序塞進去並給ID 08/23 16:54
streetbad: 與想要查詢的其他資料表JOIN後 再依需求ORDER BY 08/23 16:55
streetbad: 另外ORDER BY 應該可以 ORDER BY A DESC,B ASC之類的 08/23 16:56
streetbad: 方式來進行不同欄位的排序動作 08/23 16:56
shadowjohn: count(b.*) from .left outer join b.xx on a.id=b.id 09/13 14:45
shadowjohn: order by counts desc 09/13 14:45