原则是升序排序,先显示最常见城市的名称:
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'),
瞧,这就是我们即将进行的事件
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
感谢您的助手
最佳答案
您当前的方法是正确的,除了您尝试加入子查询,该子查询使用 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
关于mysql - 按 sql 中的出现对我的显示进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44302125/