我的数据库是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做排序条件会是固定的
难道数据库真的有这个随机性?
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联接出结果。