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

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

1. 时间段 : time1 ——–> time2

2. 给定一个数字: n

要求:

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

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

我现在是分两步获取的。

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



用union

(select * from #table where #time between time1, time2)

union

(select * from #table where #time < time1 limit n)




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

between time1 and time2



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)


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;

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

第一步
union all
第二步

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

select * from table1 where 时间 between '2011-04-01' and '2011-04-21'
union all
(select * from table1 where 时间 < '2011-04-01' order by 时间 desc limit 10)

1、WQI SVFI 如果 10:00以前没有5个数据,就返回错误。就必须计算是否有5个数据,再做处理
2、不用UNION,是两个结果集,自己权衡一下。
[100分]初学者有关问题,以时间为排序,给定一个时间段,和一个数字n,要求顺序获取这个时间段之前的n个记录和时间段的记录

相关文章:

你感兴趣的文章:

标签云: