mysql - 嵌套 GROUP BY 优化

标签 mysql sql sql-optimization

我有以下查询:

SELECT trip_id, MAX(cnt) FROM 
(
    SELECT trip_id, stop_id, COUNT(*) as cnt 
    FROM operation_ticket_part_stops 
    GROUP BY trip_id, stop_id
) AS t
GROUP BY trip_id

结果是(这是我想要的结果):

trip_id MAX(cnt)
10072 2
10583 1
**10607 11**
10608 8
10609 13
10612 5
11170 1
11239 1
11675 30
...

子查询的结果是:

trip_id stop_id cnt
...
10607 11234 11
10607 11235 10
10607 11236 10
10607 11237 11
10607 11238 9
10607 11239 7
...

有什么方法可以避免这里的子查询(并可能进行优化?)。数据库:MySQL

最佳答案

像这样

SELECT trip_id, stop_id, COUNT(*) as cnt 
FROM operation_ticket_part_stops 
GROUP BY trip_id, stop_id
ORDER BY cnt DESC
LIMIT 1

此查询对您的子查询进行排序并仅获取第一条记录(其结果与 Max 相同)

关于mysql - 嵌套 GROUP BY 优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477244/

相关文章:

MySql 存储过程帮助

php - Laravel 5.6 中使用 where 条件从两个表中获取数据

sql - Laravel 5 - Eloquent 查询 - 这可能吗?

MySQL。从结果查询填充表,其中列数不同

mysql - 如何在MySQL中有效地从最大的N条记录中选择一条随机记录(不使用子查询)?

php - 在上一次插入记录后,MySQL Execute 查询失败

php - 通过循环将值插入数据库

sql - 如何在 SQL 中为球队/对手数据创建 game_id 变量

mysql - SQL 使用 LEFT JOIN 优化 "IS NULL"查询

mysql - 我可以使用 EXISTS 而不是 JOIN 来加速这个查询吗?