读书人

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

发布时间: 2012-01-26 19:40:46 作者: rapoo

请问随机选择一段时间范围内数据的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……

读书人网 >SQL Server

热点推荐