sqlserver 随机取数据,并分页
declare @len bigint=100000,@base bigint=1000000000000000 --len 去除rand的前几位数,5个0表示去除前五位,为什么要去除?因为前五位变化太小 --base 得到随机数后乘以的值 declare @max bigint=2147483646 --rand函数允许的最大值 declare @rand bigint=7 --随机种子,数值变化,排序则变化,数值不变则排序不会变 SELECT TOP (100) id,nickname ,(RAND((id+@rand)%@max)*@base)-CAST( RAND((id+@rand)%@max)*@len as bigint)*(@base/@len) as seek FROM [dbo].test order by seek
每次取第一页的时候 ,生成一个rand种子,后面每页都使用该种子,就能分页。
刷新页面,重新取第一页时,重新生成一次种子