簡體   English   中英

無論存在什么,如何編寫查詢返回值?

[英]How to write query to return value regardless of existance?

鑒於這種:

   with data_row as  (select 1 as col_1 from dual)
   select 'Y' as row_exists from dual where exists 
   (select null 
       from data_row
      where col_1 in (2,1))

我怎么能得到這個?

Col_1  Row_exists
--------------------
1       Y
2       N

要獲得一行輸出,您需要一行輸入。 您希望第二行顯示“2”,但沒有包含該值的表。

方法是生成一個具有所需值的表,然后使用left outer join來查找匹配項:

with data_row as (
     select 1 as col_1
     from dual
    ),
    what_i_care_about as (
     select 1 as col from dual union all
     select 2 from dual
    )
select wica.col,
      (case when dr.col_1 is NULL then 'N' else 'Y' end) as row_exists
from what_i_care_about wica left outer join
     data_row dr
     on wica.col = dr.col_1;

這是創建一個列在每個缺失值-你想要什么,你不能直接做in列表中。 如果您有很多值並且它們是連續數字,那么您可以使用connect by或遞歸CTE來生成值。

暫無
暫無

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

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