如果有,可以这样写 select top 10 (select count(*) from tbl1 where 主键字段<= a.主键字段),a.name from tbl1 a order by a.主键字段
忘了加 NO select top 10 (select count(*) from tbl1 where 主键字段<= a.主键字段) as NO , a.name from tbl1 a order by a.主键字段
TO hughie(雨神):天啊,那效率岂不是很低????
to horby(三级程序员) 很低吗? 这是一个解决的办法, 你觉得怎样速度会快? 建临时表?还是 如果是建临时表,那你觉得建一个表,再插入,再查询速度快, 还是建一个嵌套查询的速度快?
to hughie(雨神):我觉得建临时表快阿.... 我的意见是如果这个表经常使用,建各物理的临时表吧,反正银盘大,我一向不赞成使用过于复杂而麻烦的sql语句,隐患多,可扩展性不好,如果将来数据量大,那个sql语句汇成为你程序的瓶颈阿... 我们可以牺牲硬件条件,提高软件性能,因为 硬件的升级费用<<软件的升级费用 ....哈哈,个人意见,仅供参考.
建临时表快 select top 10 identity(int,1,1) as no,name into #t1 from tbl1 select * from #t1 在执行时,MSSQL好象是插入no在前,排序在后,因此,生成的序号实际上还是原表的缺省排序,如果要排序,请改动 select top 10 name into #t0 from tbl1 order by name select identity(int,1,1) as no,name into #t1 from #t0 select * from #t1
select top 10 (select count(*) from tbl1 where 主键字段<= a.主键字段),a.name
from tbl1 a
order by a.主键字段
select top 10 (select count(*) from tbl1 where 主键字段<= a.主键字段) as NO , a.name
from tbl1 a
order by a.主键字段
很低吗?
这是一个解决的办法,
你觉得怎样速度会快?
建临时表?还是
如果是建临时表,那你觉得建一个表,再插入,再查询速度快,
还是建一个嵌套查询的速度快?
我的意见是如果这个表经常使用,建各物理的临时表吧,反正银盘大,我一向不赞成使用过于复杂而麻烦的sql语句,隐患多,可扩展性不好,如果将来数据量大,那个sql语句汇成为你程序的瓶颈阿...
我们可以牺牲硬件条件,提高软件性能,因为 硬件的升级费用<<软件的升级费用 ....哈哈,个人意见,仅供参考.
select top 10 identity(int,1,1) as no,name into #t1 from tbl1
select * from #t1
在执行时,MSSQL好象是插入no在前,排序在后,因此,生成的序号实际上还是原表的缺省排序,如果要排序,请改动
select top 10 name into #t0 from tbl1 order by name
select identity(int,1,1) as no,name into #t1 from #t0
select * from #t1