一次取不重复的多个,比如8个select top 8 * from ( select 1 as col union all select 2 as col union all select 3 as col union all select 4 as col union all select 5 as col union all select 6 as col union all select 7 as col union all select 8 as col union all select 9 as col union all select 10 as col union all select 11 as col union all select 12 as col union all select 13 as col union all select 14 as col union all select 15 as col union all select 16 as col union all select 17 as col union all select 18 as col union all select 19 as col union all select 20 as col ) as t order by newid()
newid是啥呢? 无order也只是列举而已
只有这两种方式,使用RAND()函数和NEWID()函数!
select cast(rand()*20 as int)+1 ------------------------------------------------------- 二楼的正确
from (
select 1 as col union all
select 2 as col union all
select 3 as col union all
select 4 as col union all
select 5 as col union all
select 6 as col union all
select 7 as col union all
select 8 as col union all
select 9 as col union all
select 10 as col union all
select 11 as col union all
select 12 as col union all
select 13 as col union all
select 14 as col union all
select 15 as col union all
select 16 as col union all
select 17 as col union all
select 18 as col union all
select 19 as col union all
select 20 as col
) as t
order by newid()
-------------------------------------------------------
二楼的正确