1

私は次のクエリを持っています:

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

4

1 に答える 1

2

このようなもの

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と同じ結果を保持します)

于 2013-03-18T12:52:24.007 に答える