首页 新闻 会员 周边

select top的问题

0
悬赏园豆:10 [已解决问题] 解决于 2014-02-12 17:28

想请教一个问题!

对于一张表里的数据,执行多次select top 。

比如执行了两次select top 1000 * from Test ,

我的问题是每次查询到结果会一样么?

对于数据量少的是一样的,但是数据量多的话好像就不太一样 

Rocky Huang的主页 Rocky Huang | 初学一级 | 园豆:134
提问于:2014-02-12 11:01
< >
分享
最佳答案
1

嗯、是的、因为数据的排列数据量大时会出现细微的差别、具体数据库的原因不知道、也偶尔是随机的、

一般实际用top时都有where条件和Order  by 限制,Order by限制的话数据量多多次查询不会有差别!

收获园豆:10
shenml | 初学一级 |园豆:100 | 2014-02-12 11:34

嗯、用了where 条件,做的是把一批数据对半修改,所以就是用

【1】update A  .... where Name in (select top count/2  Name from ....)....

【2】update A  .... where Name not in (select top count/2  Name from ...)...

当数据量多的时候,会有一批数据没有被修改,可能就是这两次top的时候,查出来的数据不一样。

Rocky Huang | 园豆:134 (初学一级) | 2014-02-12 11:42
其他回答(4)
0

只有这样结果应该是不会变的  不过我也不敢确定

闫怡飞 | 园豆:106 (初学一级) | 2014-02-12 11:07
0

加个where 排序 条件就会一样

Albert Fei | 园豆:2102 (老鸟四级) | 2014-02-12 13:23
0

因为没有经过排序的表的记录在数据库中无所谓顺序,如何排序也应该是随机的,所以你每次用top取前几条也不一样

AnyDrew | 园豆:202 (菜鸟二级) | 2014-02-12 15:42
0

不一定一样,因为你没有Order by来排序。只有当你用Order by排序之后,每次取出的结果才一样,否则是一个不可预测的情况,可能一样,也可能不一样。

ocean | 园豆:824 (小虾三级) | 2014-02-12 16:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册