Sql 是否可以选择限制1来提取日期范围加上前后的第一个条目?
基本上,我想在一个范围内选择+1个条目之后和1个条目之前 我试着这样做:Sql 是否可以选择限制1来提取日期范围加上前后的第一个条目?,sql,sqlite,union,limit,Sql,Sqlite,Union,Limit,基本上,我想在一个范围内选择+1个条目之后和1个条目之前 我试着这样做: SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime BETWEEN '2011-01-21 00:00:00' AND datetime('2011-01-21 00:00:00', '+24 hours') UNION SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime
SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime BETWEEN '2011-01-21 00:00:00' AND datetime('2011-01-21 00:00:00', '+24 hours')
UNION
SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime < '2011-01-21 00:00:00' LIMIT 1
UNION
SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime > datetime('2011-01-21 00:00:00', '+24 hours') LIMIT 1
ORDER BY DateTime ASC
但事实证明,在复合SELECT语句的末尾只能有一个限制。。那么,我如何实现这种效果呢?使用sqlite btw,您需要子查询限制以限制其范围
SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime BETWEEN '2011-01-21 00:00:00' AND datetime('2011-01-21 00:00:00', '+24 hours')
UNION ALL
SELECT * FROM (
SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime < '2011-01-21 00:00:00'
ORDER BY DateTime DESC LIMIT 1
) X
UNION ALL
SELECT * FROM (
SELECT DateTime, value FROM ReadingGlucoseBlood WHERE DateTime > datetime('2011-01-21 00:00:00', '+24 hours')
ORDER BY DateTime ASC LIMIT 1
) Y
ORDER BY DateTime ASC
可能有其他选择,但正确使用限制1确实是最快的选择。这比我预期的需要的时间要长!。。但长度并不是真正的问题。谢谢。如果目标日期是2011-01-21,那么之前的日期是否总是以完美的顺序(如2011-01-20、2011-01-22)在前一天和后一天,或者是在日期顺序中存在差距的情况下,使用我们的示例日期,之前的日期可能是2011-01-05或其他什么?可能会有跳过的日期,因为我跟踪的是事件,而不是特定的日期,通常每天会有3+个事件。只想能够比较一天中的第一个事件和最近的前一个事件,并与下一个事件相同。