2014-10-03 31 views
1

有人可以幫我按照「否」的順序'ORDER'一個mysql表。在同一個表的一列中出現的字符串。mysql:ORDER BY mysql表中某列元素的出現次數

我想根據發生位置的次數重新排列表。

請看下面的例子:

 
id name  location 
-- -----  -------- 
1  Mark  US 
2  Mike  US 
3  Paul  Australia 
4  Pranshu India 
5  Pranav  India 
6  John  Canada 
7  Rishab  India 

預期結果:

 
id name  location 
-- -----  -------- 
4  Pranshu India 
5  Pranav  India 
7  Rishab  India 
1  Mark  US 
2  Mike  US 
3  Paul  Australia 
6  John  Canada 

我嘗試此查詢:

SELECT *, COUNT(location) AS count FROM `tablename` GROUP BY `location` ORDER BY count DESC; 

但它給我看了以下結果省略重複發生位置的

 
id name  location 
-- -----  -------- 
4  Pranshu India 
1  Mark  US 
3  Paul  Australia 
6  John  Canada 
+1

這是罕見的事情一個數,也是一個事通過組! – Strawberry 2014-10-03 21:47:31

+0

@MindStalker的答案正是你現在需要的東西http://stackoverflow.com/questions/2283305/mysql-order-by-count – Logain 2014-10-03 21:55:43

回答

1
SELECT x.* 
    FROM my_table x 
    JOIN (SELECT location, COUNT(*) total FROM my_table GROUP BY location) y 
    ON y.location = x.location 
ORDER 
    BY total DESC 
    , id; 
相關問題