sqlserver 每次排序结果不一样

我的数据库是sqlserver2005
写了一个sql文 大概这样的 select * from table order by a,b,c
执行后排序是对的
但发现每次执行这个sql检索出来的结果在符合order by a,b,c 的条件下顺序有点不一样,倒不是错,就是弄不明白为啥顺序老变呢
比如第一次检索结果
a b c d
1 1 0 8
1 2 1 9
1 3 0 0

但第二次检索结果
a b c d
1 1 0 9
1 1 0 8
1 2 0 0

第一条和第二条abc字段内容一样,顺序就可以不固定么,数据库有这个随机性么?
做很多测试发现结果数据量少的话顺序是固定的,数据量多的话超过900条的时候就出现不固定现象了
to yagby
谢谢的回答。
照你说的我试了只用a来排序结果还是一样的,顺序还是不固定的,但如果在3个排序后面再加一个d做排序条件会是固定的
难道数据库真的有这个随机性?

第1个回答  2008-08-19
因为你的排序是安三个字段来的

如果是固定一个他就不会这样的

二个以上的字段会以第一个字段为准,
二三个字段会有一些随机性变化情况

如果没有特别需要,尽量不要用多字段排序,这样还会影响查询速度
第2个回答  2008-08-19
你的表是多个主键的吧。用使用主键来排序
举个例子:
加入主键是a,b,c,d
如果只使用a,b,c排序的话,可能会出现这种情况:
a b c d
1 1 1 2
1 1 2 3
1 1 2 2
而使用a,b,c,d排序的话,结果肯定是:
a b c d
1 1 1 2
1 1 2 2
1 1 2 3本回答被提问者采纳
第3个回答  2008-08-19
加上DESC或者ESC关键字试下
select * from table order by a DESC,b DESC,c DESC;
或者这样看看~~
select a , b , c ,... from table order by 1 ,2 ,3;

sqlserver 每次排序结果不一样
因为你的排序是安三个字段来的 如果是固定一个他就不会这样的 二个以上的字段会以第一个字段为准,二三个字段会有一些随机性变化情况 如果没有特别需要,尽量不要用多字段排序,这样还会影响查询速度

sqlserver排序
排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果未指定是升序还是降序,就假定为 ASC。下面的查询返回按 ProductID 升序排序的结果:代码如下 复制代码 USE AdventureWorks2008R2;GO SELECT ProductID,ProductLine,ProductModelID FROM Production.Product ORDER BY ProductID;如果 ORDER BY 子句中指...

sqlserver数据表排序问题
你这个问题,本人以前就遇到过,目前按照时间排序(order by 时间)输出是最好的办法。库里有多乱你也不用看啊!--- 第二种办法:根据了一位数据库大师的推导方式,A ->R,那么(A,B)->R ,所以建立复合聚集主键就可以了。如果非要创建单列主键,那么ID 最好不要创建 唯一约束,或是单列主键。...

sqlserver中用top 1取出最后一条数据,出了问题
你的OF_ID里是数字吧,你用ORDER的话,它是按照这列排序了,而不是按你写入这列的顺序排的。所以你得出的结果应该是这列最大的数而不是最后一列。

sql server 改变 列 顺序
如能否直接改一下SYSCOLUMNS中的顺序,回答是,不能,我试过了。更改了COLORDER字段的顺序值,也不管事。\/\/\/下面是我的过程,把SYSCOLUMNS中的记录按复制出来,再把原记录删除,然后将复制出来的数据按照新的顺序(我这里是用的反向排序)放回去,结果是,没有影响。甚至删除了SYSCOLUMNS中的相应记录,原...

SQL 排序疑问
这是因为你的这一列中输入的字符类型不一致引起的,有的为字符,有的为数字。要想按一种1,2,3,4,5,6...60,61,62... 100 排序的话你只需要把他们转换成一种类型再排序即可!如 sql server select * from 表名 order by convert(int,字段名)或 select * from 表名 order by convert(...

SQL SERVER 怎么排序,还有插入数据时候怎么指定第几行插入
回答:SQLSERVER 早就不支持记录行号的了,什么叫原来也排序?莫非指聚簇索引?

sqlserver中如何将数据插到数据库中的第一条而不是默认的最后一条
数据库中数据的顺序是可以通过order by 排序得到满意的结果的,没有固定的第一条最后一条的说法。所以你做好待排序字段的设置就可以了。

sqlserver下取前20条记录遇到的问题。 1、表A插入20条数据 2、使用sel...
这个是表格排序的问题,需要确定排序情况,才能确定top20会取什么数据。

SQLserver排序问题,字段中含有字母、数字、汉字,如何只按数字排序
如果数字都是小于10的,可以直接order by,按照字符规则排序就是你想要的这个。如果数字有两位以上的,这时候11会排在2的前面,如果想数字按照数字的规则排序,字母按照字母的规则排序,需要根据条件将数字和字母分别查询出来进行排序,然后使用union all联接出结果。

相似回答
大家正在搜