`
sjk2013
  • 浏览: 2186681 次
文章分类
社区版块
存档分类
最新评论

SQL BUG集之"随机排序中的newid()问题"

 
阅读更多

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

分享到:
评论

相关推荐

    sql server中随机函数NewID()和Rand()

    在SQL Server中,随机函数有rand(),NewID(),其中rand是在0到1内随机取数,NewID则是生成随机的uniqueidentifier唯一标识符。 SELECT * FROM Northwind..Orders ORDER BY NEWID() –随机排序 SELECT TOP 10 * ...

    如何在SQL Server中使用随机记录集

    今天的文章,我想给你简单介绍下SQL Server里如何随机记录集。 SELECT * FROM Person.Person ORDER BY NEWID() GO 这会引入新的UNIQUEIDENTIFIER数据类型列,SQL Server会在那列上进行物理排序操作。 但是在记录...

    SQL Server里如何随机记录集

    的文章,我想给你简单介绍下SQL Server里如何随机记录集。 1 SELECT * FROM Person.Person 2 ORDER BY NEWID() 3 GO  这会引入新的UNIQUEIDENTIFIER数据类型列,SQL Server会在那列上进行物理排序操作。 ...

    sql 随机抽取几条数据的方法 推荐

    传说用这个语句管用:select top 5 * from tablename order by newid() 我放到sql的查询分析器里去执行果然管用,随机抽取5条信息,不停的换,结果我应用到程序里的时候就不管用了,总是那几条,于是对这个东西进行...

    经典SQL语句大全

    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后...

    SQL_Sever数据库常用语句大全.zip

    SQL_Sever数据库常用语句大全.zip SQL_Sever数据库常用命令大全.zip power函数获取数值的n次方 round函数保留指定位数小数点(指定位数后四舍五入) ...newid函数随机抽取n条记录 新增数据库表数据 ......

    经典全面的SQL语句大全

    根据SQL语句执行后是否返回记录集,该方法的使用格式分为以下两种:  1.执行SQL查询语句时,将返回查询得到的记录集。用法为:  Set 对象变量名=连接对象.Execute("SQL 查询语言")  Execute方法调用后,会自动...

    order by newid() 各种数据库随机查询的方法

    SQL Server: 代码如下:Select TOP N * From TABLE Order By NewID() view plaincopy to clipboardprint?Select TOP N * From TABLE Order By NewID() Select TOP N * From TABLE Order By NewID()NewID()函数将...

    SQL2005工作经验

    case在where条件中的应用; SQL注入; 触发器的用法; 在SQL Server中使用CLR调用.NET方法;... 利用NEWID函数来取随机记录; 利用ROW_NUMBER方法分页; 在数据库中处理字符串数组; ......

    C#写的 SQL Builders

    .net项目中开发中有时会用到动态构建SQL语句,根据本人使用SQL的经验,写出了一些常用的SQL语句构建类,使得SQL的生成更自然。比起用字符串拼接不但好用而且不易出错。 如: InsertBuilder insertBuilder = new ...

    SQL语句常用汇总

    from 数据表 where 字段名 order by 字段名 [desc]" 查找数据库中前10记录 <br>Sql="select top n * form 数据表 order by newid()" 随机取出数据库中的若干条记录的方法 top n,n就是要取出的记录...

    SQL Server 索引基础知识

    整理了一下郭红俊大哥的关于SQL索引的10篇基础知识,转为PDF文1.记录数据的基本格式 2.聚集索引,非聚集索引 3.测试中一些常看的指标和清除缓存的方法 4.主键与聚集索引 5.理解newid()和newsequentialid() 6.索引的...

    asp下sql和access数据库随机取10条记录的代码newid()

    MSSQL:select top 10 * from [table] order by newid() ACCESS: 代码如下:‘以利用rs.move嘛 ‘如随机取10条 n = 10 ‘先要判断总记录数是否少于10,若小于10,则有多少取多少 if n>10 rs....

    sql经典语句一部分

    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后...

    用一条语句随机抽取多条记录

    在SQL SERVRE中用以下语句可随机抽出多条记录:<BR>select top 13 * from table order by newid() <P><P>但在Access中却没有newid()这个函数,那能不能用一句语句随机抽出多条记录呢?我们的xuewuyuan版主说:当然...

    数据库操作语句大全(sql)

    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db ...

    超实用sql语句

    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后...

    随机提取Access/SqlServer数据库中的10条记录的SQL语句

    代码如下:本文相关代码如下:Access:select top n * from table order by rnd(id)’id为数据库的自动编号字段Sql Server:select top n * from table order by newid() 但在ASP+Access中,或许是因为缓存的原因,第...

Global site tag (gtag.js) - Google Analytics