Chinaunix

标题: 请教一个sql语句返回结果的排序顺序不固定的问题 [打印本页]

作者: ym221479    时间: 2009-12-16 15:32
标题: 请教一个sql语句返回结果的排序顺序不固定的问题
环境:
利用自己公司的中间件平台,在sqlserver2008数据库上,对某张业务表进行qe查询,后台翻页。
此qe最终可以体现为一句普通的sql语句,比如: select * from 业务表 order by rid 其中rid是此表的主键。(注意,此sql有且只有这一个rid排序字段)
中间件在处理时,会把结果扔到tempdb中某张ht_xxxxxxxx表,然后每次返回第x条到第y条

现象:
打开前台页面,点击“提交”后,查询结果的排序有时会错乱:照理应该按照rid排序,但是有时却没有按照rid排序,(可能几次中会发生一次,也可能几十次才发生一次)
也就是说,绝大多数时,正确的结果类似:
rid,其它字段1,其它字段2。。。。
1 ,。。。。
2 ,。。。。
3 ,。。。。
4 ,。。。。
5 ,。。。。
。。。
4999,。。。。
5000,。。。。

但是,发生错乱时,返回的结果却可能是:(不一定是从3442开始,似乎有点随机。)
rid,其它字段1,其它字段2。。。。
3442,。。。。
3443,。。。。
3444,。。。。
。。。。。
4999,。。。。
5000,。。。。
1 ,。。。。
2 ,。。。。
3 ,。。。。
。。。。
3440,。。。。
3441,。。。。
此时,看tempdb中的那张ht_xxxx表,其中的顺序也是错乱的。

如果把sql语句直接放到数据库客户端中执行,排序都正确。

想询问下,这样的情况是sybase的原因呢,还是主要问题是在我们自己使用的中间件上?
作者: hobbylu    时间: 2009-12-16 15:38
sqlserver 不在本论坛支持之列
作者: ym221479    时间: 2009-12-17 14:33
晕,发错地方了,对不起版主~能移动下么?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2