使用SQL获取表中最早和最新插入的行

时间:2019-07-03 20:36:08

标签: mysql sql

我有这个结构...

ID  date                Value
732 2019-07-03 15:04:42 283.0
732 2019-07-03 15:24:07 283.2
732 2019-07-03 15:43:44 283.4
732 2019-07-03 16:03:37 283.5
732 2019-07-03 16:22:47 283.7
732 2019-07-03 16:42:25 283.8
733 2019-06-14 13:24:01 226.3
733 2019-06-14 15:09:38 228.1
733 2019-06-17 08:39:59 291.5
733 2019-06-17 10:46:20 291.7

我可以做一个简单的选择,例如:

select * 
from table 
where id=732 and date < '2019-07-03 16:03:37' 
and date > '2019-07-03 15:24:07'

但是它给了我指定时间范围内的所有数据,我只需要获取选择时间范围内最早的DATE行和最新的DATE行,那么就只有两行。

我尝试使用MIN和MAX失败。

版本:修复英语错误

预先感谢

3 个答案:

答案 0 :(得分:1)

一种简单的方法使用union alllimit

(select t.*
 from t
 order by date asc
 limit 1
) union all
(select t.*
 from t
 order by date desc
 limit 1
)

答案 1 :(得分:0)

SELECT * FROM TABLE WHERE
    date = (SELECT min(date) FROM TABLE) OR
    date = (SELECT max(date) FROM TABLE)

这将输出第一个和最后一个记录(或多个记录,如果它们在同一日期)。

答案 2 :(得分:0)

据我了解,您希望从第一个日期和最后一个日期开始输入VALUE单元格。我认为子查询就可以满足您的要求。而且我仍然会将其视为单个SQL。

SELECT value
FROM table
WHERE date = (SELECT max(date) FROM table)
OR date = (SELECT min(date) FROM table)