时间: 2021-08-13 作者:daque
/**==** 2. 随机排序中的newid()问题 **==**/ --尝试数据 declare @t table(name char(1),value int) insert into @t select ’a’,1 union all select ’a’,2 union all select ’b’,3 union all select ’b’,4 union all select ’c’,5 union all select ’c’,6 --诉求,随机排序,但name沟通的要排在所有 select a.* from @t a join( select aa=newid(),name from(select distinct name from @t) a ) b on a.name=b.name order by b.aa,newid() /*--尝试截止之一,并没有到达诉求.即使将join改成left right full join,就精确 name value ---- ----------- b 4 b 3 c 5 a 1 a 2 c 6 (所感化的行数为 6 行) --*/