如何取查询结果集里面的最后一条记录?

djfu 2008-03-14 10:41:48
假设一次查询有很多记录,我只想这个查询结果集里面的最后一条记录,该怎么写SQL语句?
...全文
374 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ehsgs 2008-03-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ehsgs 的回复:]
当然不是这样查

这样试试:

select * from
(select rownum rw, EndDate as EndDate from SaleTable order by EndDate desc) t
where rw = 1 order by EndDate
[/Quote]

select * from
(select rownum rw, EndDate as EndDate from SaleTable order by EndDate desc) t
where rownum = 1 order by EndDate

这样就能得到2008-03-09 S4了
ehsgs 2008-03-14
  • 打赏
  • 举报
回复
当然不是这样查

这样试试:

select * from
(select rownum rw, EndDate as EndDate from SaleTable order by EndDate desc) t
where rw = 1 order by EndDate
djfu 2008-03-14
  • 打赏
  • 举报
回复
使用rownum = 1的思路可以,但是有问题。
为什么错,只有你自己亲自去执行这些SQL语句看结果才知道原因。

select * from SaleTable
where Enddate < to_date('2008-03-10','yyyy-mm-dd')
and Rownum = 1
order by EndDate desc

----------------------------------------
假设SaleTable 有如下记录

2008-02-01 S1
2008-02-03 S2
2008-03-01 S3
2008-03-09 S4

执行上面的语句得到的结果是:2008-02-01 S1
而不是 2008-03-09 S4
hebo2005 2008-03-14
  • 打赏
  • 举报
回复
是啊,先DESC排序再用rownum=1 比较好做
fxianxian 2008-03-14
  • 打赏
  • 举报
回复
ORDER BY COLUMN DESC 或者 ORDER BY COLUMN
然后ROWNUM=1
HelloWorld_001 2008-03-14
  • 打赏
  • 举报
回复
同意楼上想法,排序换个方式就变成求第1条记录了
只需要写rownm=1就可以了
ehsgs 2008-03-14
  • 打赏
  • 举报
回复
如果你按照某个字段排过序 以上不适用

假如你用id按升序排序,然后你想从这个结果集中取最后一条,你就按降序排列,然后用rownum = 1取第一条就ok了
hebo2005 2008-03-14
  • 打赏
  • 举报
回复
用max(rownum)比较合适吧
max(rowid)适于于没有排序的,有排序的结果集,rowid最大的不等于排序后的最后条结果
ehsgs 2008-03-14
  • 打赏
  • 举报
回复
select max(rowid) from 结果集

17,382

社区成员

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

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