打印本文 打印本文 关闭窗口 关闭窗口
SQL BUG集之随机排序中的newid()问题
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1024  更新时间:2007/11/14 11:14:07  文章录入:mintao  责任编辑:mintao

/**==** 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 行)
--*/

打印本文 打印本文 关闭窗口 关闭窗口