select * from A where id in (select aid from B where rownum<2 order by create_time desc) 我想根据某个字段排序后的取第一条数据,怎么报错呢,报:缺少右括号; 本人对oracle不是太精通,请各位大侠们帮帮忙!!急啊,
select * from A where id in (select aid from B where rownum <2 ) order by create_time desc
SELECT * FROM A T WHERE T.ID IN (SELECT T.AID FROM (SELECT AID FROM B ORDER BY CREATE_TIME DESC) T WHERE ROWNUM < 2)
建议用分析函数吧.select aid from( select aid, row_number() over(partition by aid order by create_time desc) cc from B ) where cc=1PS:上面只是完成了IN后面的部分 不过也没有必要这样写,象2楼也可以.假如你是要按某个字段来分组然后再按时间排列的话,上述也许比较好. 还有,我觉得你养成了用IN的习惯,还是改一下吧,这里可以用等号,因为你IN的后面只返回一个字段值或者NULL.
from
(
select *
from A
order by create_time desc
)
where rownum<2;
(
select aid from (select aid,rownum rn from B order by create_time desc) where rn<2)
)
有没有order结果都是一样的
rownum是检索得到记录的顺序,和排序方式是没关系的
FROM A T
WHERE T.ID IN
(SELECT T.AID FROM (SELECT AID FROM B ORDER BY CREATE_TIME DESC) T WHERE ROWNUM < 2)
select aid, row_number() over(partition by aid order by create_time desc) cc from B
) where cc=1PS:上面只是完成了IN后面的部分
不过也没有必要这样写,象2楼也可以.假如你是要按某个字段来分组然后再按时间排列的话,上述也许比较好.
还有,我觉得你养成了用IN的习惯,还是改一下吧,这里可以用等号,因为你IN的后面只返回一个字段值或者NULL.