当前位置: 代码迷 >> Sql Server >> 请教随机选择一段时间范围内数据的sql写法
  详细解决方案

请教随机选择一段时间范围内数据的sql写法

热度:48   发布时间:2016-04-27 18:02:46.0
请问随机选择一段时间范围内数据的sql写法
表  
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风怒了
探讨

SQL code
select * from tb where 创建时间 in(select max(创建时间) from tb union all select min(创建时间) from tb )
union all
select top 18 * from tb where where 创建时间 not in(select max(创建时间) from tb union all sel……