簡體   English   中英

Oracle,使用desc和rownum的順序獲得頂行

[英]Oracle, get top row using order by desc and rownum

該查詢給了我無效的標識符錯誤,我知道這是因為子查詢將只能訪問高一層的數據。

select *
from   t2_callerid_plan cp
where  cp.subsrefnum in (
       select *
       from   (
              select vsap.subsrefnum
              from   prv_internet_responses_vsap vsap
              where  vsap.subsrefnum = cp.subsrefnum
              order by vsap.id desc
       )
       where rownum = 1
);

現在,我在徘徊是否有辦法創建可以在子查詢中使用查詢數據時僅返回最新行的查詢?

您可以使用ROW_NUMBER()

SELECT * FROM ( 
    SELECT cp.*,
           ROW_NUMBER() OVER(PARTITION BY cp.subsrefnum ORDER BY vsap.id desc) as rnk
    from t2_callerid_plan cp
    JOIN  prv_internet_responses_vsap vsap
     ON vsap.subsrefnum = cp.subsrefnum) p
WHERE p.rnk = 1

您可以嘗試以下方法:

  select *
from   t2_callerid_plan cp
inner join
(
 select vsap.subsrefnum,ROW_NUMBER()  OVER (PARTITION BY subsrefnum ORDER BY vsap.id desc) rn
              from   prv_internet_responses_vsap vsap 
)vsap
on    vsap.subsrefnum = cp.subsrefnum and vsap.rn=1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM