首页新闻找找看学习计划

sql 语句

0
悬赏园豆:5 [待解决问题]

如有1,2,3,4。。。40 ,这个ID是连续的

为什么select max(id) from (select top 20 id from dbo.Product) as A 得到的是40 

而 select max(id) from (select top 20 id from dbo.Product Order by id) as A 得到的是20

这是为什么?

丑_小_鸭的主页 丑_小_鸭 | 初学一级 | 园豆:199
提问于:2012-11-13 16:17
< >
分享
所有回答(5)
0

对的

清海扬波 | 园豆:847 (小虾三级) | 2012-11-13 16:18
0

select top 20 id from dbo.Product 这句话没有特别指定排序条件的话会按以下顺序排序:

1、如果没有主键,以物理存放顺序。

2、有主键的话,以主键排序

飞来飞去 | 园豆:2057 (老鸟四级) | 2012-11-13 16:19

不好意思忘了补充了,这是sql server 2000的规则,其他没有研究过

支持(0) 反对(0) 飞来飞去 | 园豆:2057 (老鸟四级) | 2012-11-13 16:33
0

你用的的是什么数据库,在sql server 中尝试过这个sql,没有错误,返回正确的结果。

order by 不需要加入,也是对的

chenping2008 | 园豆:9836 (大侠五级) | 2012-11-13 16:34

sql server

支持(0) 反对(0) 丑_小_鸭 | 园豆:199 (初学一级) | 2013-07-03 18:07
0

别名尽量明确化:a.id,另外你得把聚合函数和分组领悟了。

SmartBooks | 园豆:264 (菜鸟二级) | 2012-11-13 17:32
0

 10行数据 id:1,2,3,6,9,5,1,4,6,8

  select max(id) from (select top 5 id from dbo.Product) as A ,  top 5 =1,2,3,6,9, max(id)  得到9

但你想得到是top 5=5,1,4,6,8, 想得到8, 跟实际得到的9不一样。

如果加上order by id desc 降序 8,6,4,1,5,9,6,3,2,1  ,top 5=5,1,4,6,8 得到8 和预期一样。

三十三块 | 园豆:373 (菜鸟二级) | 2012-11-13 18:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册