--id上建聚集索引 --然后随机生成1~id最大值之间的一个数字 declare @id int --你要获取的id declare @maxid int --id最大值 select @maxid=max(id) from tb set @id=ceiling(rand()*@maxid) while not exists(select 1 from tb where id=@id) begin set @id=ceiling(rand()*@maxid) end print @id --PS:也许是馊主意
select top 1 id from tbl order by newid() --其实个人觉得这个没什么不好,可能就是用不到索引...
--id上建聚集索引
--然后随机生成1~id最大值之间的一个数字
declare @id int --你要获取的id
declare @maxid int --id最大值
select @maxid=max(id) from tb
set @id=ceiling(rand()*@maxid)
while not exists(select 1 from tb where id=@id)
begin
set @id=ceiling(rand()*@maxid)
end
print @id
--PS:也许是馊主意
select top 1 id from tbl order by newid()
--其实个人觉得这个没什么不好,可能就是用不到索引...
http://tech.ddvip.com/2008-12/1229671304101380.html
FROM TB TABLESAMPLE SYSTEM (1 PERCENT)多少数据都是浮云
select top 100 id from tbl order by newid()
select top @n id from tbl order by newid()
sql只主要执行一次,利用每一条记录就行了
肯定不重复