使用 rownum 总是得到非空值

Use rownum to always get non null value

select case when (CUST.ADDRESS_TYPE='OFFICE') then 
                 (Select MOBILE 
                  FROM cust_table CUST 
                  where CID = Deal.CID 
                  and ADDRESS_TYPE = 'CURRES' 
                  and rownum = 1)
       else 
                  CUST.MOBILE 
       end as MOBILE 
FROM cust_table CUST 
RIGHT OUTER JOIN (SELECT CID CID 
                         , WNAME
                         , APPLICANT_TYPE 
                  FROM deal_table ) DEAL 
      ON DEAL.CID = CUST.CID 
      AND APPLICANT_TYPE = 'P' 
      and mailing_add = 'true' 
WHERE WNAME='22135' 
and rownum = 1 

#手机#

  1. 647432923

#手机#

  1. 74238423

这个查询 returns 一个名为 'MOBILE ' 的列有两行,当我最后不使用 rownum = 1 时,其中一个条目总是空的,但是如果我把 rownum = 1 接近尾声,然后在某些情况下它 returns 空值,在某些情况下它是非空值。我如何使用 rownum 以便查询始终 returns 非空值。

不要为此使用rownum。 rownum 将为您提供 您的查询 运行 之后的行号。使用正确定义的 ORDER BY 子句在末尾获取 NULLS 并仅获取第一行。

<your query>
WHERE wname='22135' 
ORDER BY mobile NULLS LAST
FETCH FIRST 1 ROWS ONLY