[100分]菜鸟问题,以时间为排序,给定一个时间段,和一个数字n,要求顺序获取这个时间段之前的n个记录和时间段的记录

1. 时间段 : time1 --------> time2
2. 给定一个数字: n


要求:

以时间为顺序,获取 time1 之前的 n个数据 和 time1->time2 的数据的 合集。




能不能有什么简单点的办法。

我现在是分两步获取的。

求助各位大大,讲解一下思路,刚刚开始接触数据库,谢谢!

作者: norsd   发布时间: 2011-05-05

用union
(select * from #table where #time between time1, time2)
union
(select * from #table where #time < time1 limit n)

作者: afeiqiang   发布时间: 2011-05-05

更正一下,between 的写法应该是
between time1 and time2

作者: afeiqiang   发布时间: 2011-05-05

SQL code
Select * From(Select * From T where DATETIME<TIME1 order by ID limit n)S order by ID
union all
(Select * From T where DATETIME BETWEEN TIME1 AND TIME2)

作者: lxq19851204   发布时间: 2011-05-05

1. 时间段 : time1 --------> 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;

作者: wwwwb   发布时间: 2011-05-05

贴建表及插入记录的SQL,及要求结果出来看看

作者: WWWWA   发布时间: 2011-05-05

第一步
union all
第二步

作者: rucypli   发布时间: 2011-05-05

忽然发现代码框不再花花绿绿了^_^

作者: dianyancao   发布时间: 2011-05-05

有一句没理解,“time1之前的N个数据”是什么意思,是时间到达time1前的紧贴time1的N个数据,还是time1之前所有记录的最前N条数据。
如果是第一个理解的话,那么楼上几位基本都错了,应该对ID先倒序,再取limit N
语法没什么问题。

作者: fellatioyzx   发布时间: 2011-05-05

2L的就可以啊

作者: zhiguozhiguo   发布时间: 2011-05-05