select * from A where id in (select aid from B where rownum<2 order by create_time desc)
我想根据某个字段排序后的取第一条数据,怎么报错呢,报:缺少右括号;
本人对oracle不是太精通,请各位大侠们帮帮忙!!急啊,

解决方案 »

  1.   

    给你举个例子select *
    from
    (
    select * 
    from A
    order by create_time desc
    )
    where rownum<2;
      

  2.   

    select * from A where id in 
    (
    select aid from (select aid,rownum rn from B  order by create_time desc) where rn<2)
    )
      

  3.   

    加这个条件 rownum <2
    有没有order结果都是一样的
    rownum是检索得到记录的顺序,和排序方式是没关系的
      

  4.   

    select * from A where id in (select aid from B where rownum <2 ) order by create_time desc
      

  5.   

    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)
      

  6.   

    建议用分析函数吧.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.