select top问题
select top 1000 from table order by newid()
能不能让top 1000的这个数值是随机的,1000是个变量,比如定制SQL作业,
每10分钟更新一些数据,这次是top 1000,下次更新的随机任意数,120,121,
2002等等。
select top rand() * 显示是不对的,另外最好是在一个值的范围内,如在1000条
记录以内。
这条SQL语句是做作业运行的,所以不要考虑外面传入变量数值问题。
谢谢!
------解决方案--------------------declare @i int
set @i=1000*rand()
print @i
set rowcount @i
select * from table order by newid()
set rowcount 0
------解决方案--------------------declare @num int
set @num = rand() * 1000
declare @sql varchar(200)
set @sql = 'select top ' + cast(@num as varchar) + ' * from tab order by newid() '
exec(@sql)
------解决方案--------------------try
Declare @I Int
Select @I = Cast(Ceiling(Rand() * 1000) As Int)
EXEC( 'Select TOP ' + @I + ' * From [table] order by newid() ')
------解决方案--------------------eclare @i int
set @i=rand()*1000 --范围1000
declare @strsql varchar(100)
set @strsql= 'select top ' + convert(varchar(5),@i) + ' * from 表名
print(@strsql)
exec(@strsql)
------解决方案--------------------declare @i int
set @i=rand()*1000 --范围1000
declare @strsql varchar(100)
set @strsql= 'select top ' + convert(varchar(5),@i) + ' * from 表名
print(@strsql)
exec(@strsql)
------解决方案--------------------弄複雜了
Declare @I Int
Select @I = Rand() * 1000
EXEC( 'Select TOP ' + @I + ' * From [table] order by newid() ')