如有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
这是为什么?
对的
select top 20 id from dbo.Product 这句话没有特别指定排序条件的话会按以下顺序排序:
1、如果没有主键,以物理存放顺序。
2、有主键的话,以主键排序
不好意思忘了补充了,这是sql server 2000的规则,其他没有研究过
你用的的是什么数据库,在sql server 中尝试过这个sql,没有错误,返回正确的结果。
order by 不需要加入,也是对的
sql server
别名尽量明确化:a.id,另外你得把聚合函数和分组领悟了。
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 和预期一样。