如何找出最新插入的一条数据
由于oracle没有select top n的语句,就用了这条语句:
select group_id,rownum from
(select group_id,rownum from SDCD.ZDWIP_JOB_GROUP order by group_id desc)
where rownum< 2
却提示缺省右括号,哪位兄弟帮帮忙啊????
由于oracle没有select top n的语句,就用了这条语句:
select group_id,rownum from
(select group_id,rownum from SDCD.ZDWIP_JOB_GROUP order by group_id desc)
where rownum< 2
却提示缺省右括号,哪位兄弟帮帮忙啊????
(select group_id,rownum rn from SDCD.ZDWIP_JOB_GROUP order by group_id desc)
where rn< 2按上面的语句改
select group_id,rn from
(select group_id,rownum rn from SDCD.ZDWIP_JOB_GROUP order by group_id desc) a
where rn< 2
SQLPLUS? 还是sql dev工具里?
发现问题的原因了:rownum不是一个固定的值,
select group_id,rownum rn,rowid
from SDCD.ZDWIP_JOB_GROUP
group_id rn
83016 1
83016 2
83016 3
83016 4
83017 5
当我只选出group_id为83017的值时,rn却变成了1
select group_id,rownum rn,rowid
from SDCD.ZDWIP_JOB_GROUP
where group_id=83017
group_id rn
83017 1
(select group_id,rownum rn from SDCD.ZDWIP_JOB_GROUP order by group_id asc) a
where rn< 2
也就是说:取得最前面的几条记录是经过排序的。
RACLE中,如果使用WHERE rownum<=N和ORDER BY一起出现的话,
ROWNUM优先于ORDER BY。也就是说,ORDER BY无法对所有满足条件的记录排序,
只能对当前的rownum<=N中的N条记录排序。
--如果你非要用rownum的话,那么只能加一层子查询了
select * from (select ....order by group_id desc) where rownum < 2
这样试试select group_id,rn from
(select group_id,rownum rn from SDCD.ZDWIP_JOB_GROUP order by group_id desc)
where rownum< 2
select *
from SDCD.ZDWIP_JOB_GROUP
where group_id=(select max(group_id) from SDCD.ZDWIP_JOB_GROUP)
不行就用max(rowid)吧,rownum不是很好用,大于号都没作用
”。在oracle中 rownum不是表中已经提前定义好的列,它是在查询的过程中动态生成的数据。oracle文档中说:The first row selected has a ROWNUM of 1, the second has 2, and so on。所以,你懂了吗?