100万数据,选第20条到41条。ORACLE和SQL SERVER各实现一次

ZHENNIUBILE 2010-07-27 04:48:16
不是作业,是面试。没做出来。
...全文
44 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
claro 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 budong0000 的回复:]

with a
(
select rownumber rn,* from tb
)
select * from a where rn between 20 and 41
sql 里下面这个更快吧

with a
(
select top 41 rownumber() over(order by col) rn,* from tb
)
select * from a ……
[/Quote] 对。很好。

如果题目有要求性能,我会建议它在新建的自增列上做个非聚集索引。
budong0000 2010-07-27
  • 打赏
  • 举报
回复
with a
(
select rownumber rn,* from tb
)
select * from a where rn between 20 and 41
sql 里下面这个更快吧

with a
(
select top 41 rownumber() over(order by col) rn,* from tb
)
select * from a where rn between 20 and 41
obuntu 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 claro 的回复:]

SQL code
--补充obuntu
--MSSQL
with a
(
select rownumber = ROW_NUMBER() OVER (ORDER BY getdate()) ,* from tb
)
select *
from a
where rownumber between 20 and 41



题目不严谨,忽略排序。
[/Quote]



很少写SQL ,手生的很。。
claro 2010-07-27
  • 打赏
  • 举报
回复
--补充obuntu
--MSSQL
with a
(
select rownumber = ROW_NUMBER() OVER (ORDER BY getdate()) ,* from tb
)
select *
from a
where rownumber between 20 and 41


题目不严谨,忽略排序。
bancxc 2010-07-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 obuntu 的回复:]
oracle:

select * from tb where rownum between 20 and 41

sql server:

with a
(
select rownumber rn,* from tb
)
select * from a where rn between 20 and 41


应该是这样吧。
[/Quote]膜拜》
obuntu 2010-07-27
  • 打赏
  • 举报
回复
oracle:

select * from tb where rownum between 20 and 41

sql server:

with a
(
select rownumber rn,* from tb
)
select * from a where rn between 20 and 41


应该是这样吧。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧