select a.* , 
       (select ywdm from wewu  where   rownum=1 and phone=a.phone order by id desc   ) 
from dnzz_zcyh  a ORA-00907:缺失右括号,SQL SEEVER中子查询TOP语法,在这为什么会报错,我就是想实现根据PHONE对应,查出出最后一条ywdm,不用order by id desc就不会报错,如果不用那么我的rownum=1就没有含义,也没有达到我的目的。特地请大家支持帮助,分不多啦。

解决方案 »

  1.   


    select a.* ,  
      (select ywdm from wewu where rownum=1 and phone=a.phone)  
    from dnzz_zcyh a  
      

  2.   


    select c.ywdm
    from (
         select rownum rn,ywdm
         from dnzz_zcyh a,wewn b
         where a.phone=b.phone
         order by id desc) c
    where rn = 1
    oracle rownum分页
      

  3.   


    select a.*,d.ywdm
    from dnzz_zcyh a,
         (select c.ywdm,c.phone
          from (
                select rownum rn,b.ywdm,a.phone
                from dnzz_zcyh a,wewn b
                where a.phone=b.phone
                order by b.id desc) c
          where c.rn = 1) d
    where a.phone=d.phone
    /
      

  4.   

    关键要弄清楚rownum伪列的作用,简单地说, rownum会为返回后的数据从1到n分配一个编号。
    但是这有一个顺序,就是执行查询时先解析查询条件,然后分配rownum,最后分组,排序等。
    所以为了达到先排序后rownum的目的,要使用子查询:
    select * from (select * from table order ...) where rownum......