表
id 内容 创建日期
1 a 2011-4-5
2 b 2011-4-6
...................
100 x 2011-12-1
现在我要得到 2011-6-20 到 2011-7-1 时间段中 20条数据
1)这个时间段中最小的时间记录和最大的时间记录必须有
2)不足20条记录 显示全部记录
3)超过20条记录,随机选择其中18条记录和首尾记录一起输出
------解决方案--------------------
查3次union all
一次min
一次max
一次newid()
------解决方案--------------------
- SQL code
select * from tb where 创建时间 in(select max(创建时间) from tb union all select min(创建时间) from tb )union allselect top 18 * from tb where where 创建时间 not in(select max(创建时间) from tb union all select min(创建时间) from tb ) order by newid()
------解决方案--------------------
最后一行where风怒了