说我有一个表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 )。 –
@戈登哎呀,我会解决这个问题。 –