2017-06-01 40 views
0

原理顯示的發生是升序排列第一,顯示有最常見的城市名稱進行排序:排序我在SQL

enter code here 

INSERT INTO `test` (`id`, `name`, `firstname`, `City`) VALUES 
(1, 'Salomon', 'Farouk', 'Marseille'), 
(2, 'Sangronio', 'Frederic', 'Paris'), 
(3, 'Soulé', 'Faiza', 'New York'), 
(4, 'Massimo', 'Franck', 'Marseille'); 

我想顯示這樣


(1, 'Salomon', 'Farouk', 'Marseille'), 
(4, 'Massimo', 'Franck', 'Marseille'); 
(2, 'Sangronio', 'Frederic', 'Paris'), 
(3, 'Soulé', 'Faiza', 'New York'), 

等瞧毫安拉基特MAIS CA NE Marche的PAS

SELECT a.* FROM test a INNER JOIN 
    (SELECT id,name,firstname,city, COUNT(*) as compte 
    FROM test 
    GROUP BY city 
    ) AS c 
    ON a.id = c.id 
    ORDER BY compte DESC 

Merci pour votre助手

回答

0

除了您正在嘗試使用id加入發現城市數的子查詢之外,您目前的方法是正確的。這對於那個只查找城市及其數量的子查詢來說甚至沒有意義。相反,加入城市的名字來指找到城市數的子查詢,然後使用這些計數排序結果集:

SELECT t1.*, t2.compte 
FROM test t1 
INNER JOIN 
(
    SELECT city, COUNT(*) AS compte 
    FROM test 
    GROUP BY city 
) t2 
    ON t1.city = t2.city 
ORDER BY t2.compte DESC 

演示在這裏:

Rextester