请问这条语句怎样优化,只要使用一个LEFT OUTER JOIN 就可以呢?语句1
select z.xmmc,y.xmbh,x.xmzt,x.yjsj,u1.qm,u.qm,y.fbmc,y.ywfb,y.fxm,y.xh,ROWNUM   
from t_xmssjc y,t_xmsp z,t_dagl x 
LEFT OUTER JOIN T_user u1 on x.fhr =u1.xh  LEFT OUTER JOIN T_user u on x.fhr =u.xh
where (x.ssjcxh=y.xh) and (y.xmspxh=z.xh) and (x.ssjcxh=y.xh) and ROWNUM BETWEEN 1 AND 20========================
语句2SELECT * FROM(SELECT A.*, ROWNUM RN 
FROM (select z.xmmc,y.xmbh,x.xmzt,x.yjsj,u1.qm,y.fbmc,y.ywfb,y.fxm,y.xh 
from t_xmssjc y,t_xmsp z,t_dagl x 
LEFT OUTER JOIN T_user u1 on x.fhr =u1.xh 
where (x.ssjcxh=y.xh) and (y.xmspxh=z.xh) and (x.ssjcxh=y.xh) )A)WHERE RN BETWEEN 1 AND 20
把语句1改成语句2,报未找到列,请问该怎样该呢??

解决方案 »

  1.   

    把RN 改为ROWNUM试试SELECT   *   FROM(SELECT   A.*,   ROWNUM 
    FROM   (select   z.xmmc,y.xmbh,x.xmzt,x.yjsj,u1.qm,y.fbmc,y.ywfb,y.fxm,y.xh   
    from   t_xmssjc   y,t_xmsp   z,t_dagl   x   
    LEFT   OUTER   JOIN   T_user   u1   on   x.fhr   =u1.xh   
    where   (x.ssjcxh=y.xh)   and   (y.xmspxh=z.xh)   and   (x.ssjcxh=y.xh)   )A)WHERE   ROWNUM   BETWEEN   1   AND   20