說我有一個表events
,看起來像這樣計算在MySQL在多個列的分
id start end
1 12:09 12:12
2 12:07 12:09
3 12:07 12:08
我想要得到的最低起始時間與最小ID。之所以我需要這個id來引用這行以後才能檢索到end
列。
在這個例子中,那將是(12:07,2)。
我知道得到這個的一種方式是檢索最小start
,然後再取分的那id
,像這樣:
select min (e.id) as minId from events as e
join (
select min (start) as minStart from events
) as x
where e.start = x.minStart
group by e.start
但是,有沒有辦法讓兩者在一個
(無子查詢)?像,
select min (start, id) as (minStart, minId) from events
顯然不是因爲這是不正確的語法,但在這種精神?
後續
戈登以下建議,運行order by start, id limit 1
時,MySQL的使用索引。下面介紹一下EXPLAIN長相當包括limit 1
,如:
1 SIMPLE events index NULL startId 5 NULL 1 NULL
,這裏是什麼樣子沒有limit 1
:
1 SIMPLE events ALL NULL NULL NULL NULL 640 Using filesort
最小啓動時間ID將是(1 12:05 )。 –
@戈登哎呀,我會解決這個問題。 –