mysql - 按 sql 中的出现对我的显示进行排序

标签 mysql 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'),

瞧,这就是我们即将进行的事件

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/

相关文章:

php - 产品服务器上的表怎么会是 "crashed"呢?

mysql - SQL连接相当复杂,但需要fiddle

sql - 在单个 T-SQL 语句中多次返回时间戳

php - LIKE 查询不起作用 PDO

mysql - 如何告诉 Rails 拥有一张只有一行的表

MySQL 看不到数据库

SQL根据具有不同条件的两行选择结果

sql - 强制查询根据 WHERE 值传递重复结果

mysql - 在 InnoDB 中查找具有相似关键字的项目?

php - MySQL 查询帮助 - 将标签功能转换为 SQL 数据库