SQL语句如何返回表中第n行到第m行之间的记录?

cdhuanglei 2005-02-18 10:03:36
SQL语句如何返回表中第n行到第m行之间的记录?
...全文
311 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Croatia 2005-03-07
  • 打赏
  • 举报
回复
To: pipilyg(东海)

得到他的Rowid,
或者是Key
糖芋 2005-03-07
  • 打赏
  • 举报
回复
若是更新(update)指定行数内的数据,该如何写呢?
soniczck 2005-02-18
  • 打赏
  • 举报
回复
看你的语句改为下边的也应该行吧。
select tbn.* from '||tbname||' tbn) where trunc((rownum - 1) / '||pagesize||') + 1 = '||pageno;
cdhuanglei 2005-02-18
  • 打赏
  • 举报
回复
多谢楼上各位的回答,正是我想要的,但还有一个问题:

我要用下面的语句实现,因为数据表是个输入参数,即指不定查询哪个表,所以表中的具体字段也就不清楚,所以用*号取出全部字段,但就会出现一个问题:查询结果多中会多出一个page字段,请问如何去除?

select * from (select trunc((rownum - 1) / '||pagesize||') + 1 page, tbn.* from '||tbname||' tbn) where page = '||pageno;
water_qing 2005-02-18
  • 打赏
  • 举报
回复
TO dy_yong(祥子)
你的SQL有点问题呵,
select * from
(select rownum as rid,aa.* from aa
where rownum <n) t
where rid>m
子查询里应该是小于,外查询才是大于。
但这种写法还有缺陷,如里子查询当中有order by 语句的话,就不好使了。
下面这种写法是可以排序的

SELECT * FROM
(SELECT ROWNUM AS MY_ROWNUM, TABLE_A.* FROM
( select * from 表名 ORDER BY 日期 desc) TABLE_A
WHERE ROWNUM<10)
WHERE MY_ROWNUM>=5;
dy_yong 2005-02-18
  • 打赏
  • 举报
回复
select * from
(select rownum as rid,aa.* from aa
where rownum >n) t
where rid<m
dy_yong 2005-02-18
  • 打赏
  • 举报
回复
select * from
(select rownum as rid,t.* from aa
where rownum >n) t
where rid<m
ORARichard 2005-02-18
  • 打赏
  • 举报
回复
select col1,col2,...,coln from (select rownum no,col1,col2,...coln from tb)
where no between n and m;
Croatia 2005-02-18
  • 打赏
  • 举报
回复
water_qing(小清)
你厉害的。赫赫。
water_qing 2005-02-18
  • 打赏
  • 举报
回复
实在不行,就把那个*替换字段名称,取原表的字段名
select column_name from user_TAB_COLUMNS where table_name=tbname
把遍历到的所有column_name组成那个*号
ORARichard 2005-02-18
  • 打赏
  • 举报
回复
留着它吧,去掉很困难(或者说很复杂)
cdhuanglei 2005-02-18
  • 打赏
  • 举报
回复
soniczck(城市农作物) 说的不行哦,返回未选定行

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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