order排序和where条件 先后问题

xuyufeng822 2009-04-10 05:24:31
我想把一个表的记录 按 “时间” 字段 降序排列 ,然后再取第一条记录
这样的 SQL语句怎么写好呢。?!

我开始是 select * from 表 where rownum=1 order by ‘时间’
但是这样我发现是 先取 第一行记录,然后再排序,这就失去了排序的意义。我是要先排序,然后取第一行。

后来我做的联合查询, select ‘序号’ from (select * from 表 order by ‘时间’) where rownum=1
这么做是实现了,但这么做是 把数据都查出来,然后再查一遍,取第一行,如果数据量大的话,这么的效率是不是很低啊

请问又什么好的办法吗
...全文
334 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Raul_Gonzalez 2009-04-11
  • 打赏
  • 举报
回复
row_number() over
hjianke 2009-04-11
  • 打赏
  • 举报
回复
只是数据量大的话实现确实比较困难
wtk13 2009-04-10
  • 打赏
  • 举报
回复
只能按5楼的写法写了。
cheng_fengming 2009-04-10
  • 打赏
  • 举报
回复
按照你的要求,应该写成这样:
select * from (select * from 表 order by ‘时间') where rownum=1;

建议你去看看这个帖子:
http://topic.csdn.net/u/20090408/09/ffa6ed1a-91ec-4d0e-90f1-0d0b4cd2adb2.html
pldongdong 2009-04-10
  • 打赏
  • 举报
回复
既然按时间排序,那么2楼的方法应该可行的
多壮志 2009-04-10
  • 打赏
  • 举报
回复
如果是rownum,基本上用2楼的就ok了。
但实际情况往往不是那样的。所以,还是老老实实来吧。

请输入... 2009-04-10
  • 打赏
  • 举报
回复

select ‘序号’ from 表 where ‘时间’=(select max(时间) from 表 )
superhsj 2009-04-10
  • 打赏
  • 举报
回复
这个和where与order by的先后顺序没有关系,而是rownum比较特殊造成的

17,377

社区成员

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

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