1. 时间段 : time1 --------> time2
2. 给定一个数字: n
要求:以时间为顺序,获取 time1 之前的 n个数据 和 time1->time2 的数据的 合集。
能不能有什么简单点的办法。我现在是分两步获取的。求助各位大大,讲解一下思路,刚刚开始接触数据库,谢谢!
2. 给定一个数字: n
要求:以时间为顺序,获取 time1 之前的 n个数据 和 time1->time2 的数据的 合集。
能不能有什么简单点的办法。我现在是分两步获取的。求助各位大大,讲解一下思路,刚刚开始接触数据库,谢谢!
(select * from #table where #time between time1, time2)
union
(select * from #table where #time < time1 limit n)
between time1 and time2
union all
(Select * From T where DATETIME BETWEEN TIME1 AND TIME2)
2. 给定一个数字: n
要求:以时间为顺序,获取 time1 之前的 n个数据 和 time1->time2 的数据的 合集。
SET @ASQL=CONCAT('SELECT * FROM TT WHERE TIME<time1 LIMIT ',N,' UNION ALL ','SELECT * FROM TT WHERE TIME between time1 and time2');
PREPARE STML FROM @ASQL;
EXECUTE STML;
union all
第二步
如果是第一个理解的话,那么楼上几位基本都错了,应该对ID先倒序,再取limit N
语法没什么问题。
union all
(select * from table1 where 时间 < '2011-04-01' order by 时间 desc limit 10)
如果 10:00以前没有5个数据,就返回错误。必须要求满足有5个数据, 而10:00-12:00中间有没有数据无所谓。能否简单实现?而不用另外加一条 count?
1.关于取前 n 条数据,是要紧贴time1的, 所以大家和我当初想的一样,先倒序列,然后取值,然后再倒回来,那是否我count time1之前的数据个数,然后 limit offset 更好更快?
2. union 语句和 分成两条没啥区别吧,汗
2、不用UNION,是两个结果集,自己权衡一下。