sqlserver 每次排序结果不一样

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:18:58
我的数据库是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做排序条件会是固定的
难道数据库真的有这个随机性?

你的表是多个主键的吧。用使用主键来排序
举个例子:
加入主键是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

因为你的排序是安三个字段来的

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

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

如果没有特别需要,尽量不要用多字段排序,这样还会影响查询速度

加上DESC或者ESC关键字试下
select * from table order by a DESC,b DESC,c DESC;
或者这样看看~~
select a , b , c ,... from table order by 1 ,2 ,3;