【问题标题】:Select columns if row exists else default values in oracle如果行存在则选择列,否则oracle中的默认值
【发布时间】:2017-01-27 18:15:51
【问题描述】:

在 Oracle sql 中,我想从表中选择几个列值。如果不存在行,我想为每列选择默认值。我需要类似下面的东西

if exists (select 1 from mytable where key ='11') 
then
select key, value, comment from mytable where key ='11'
else
select 'key1' as "key", 'value1' as "value", 'default' as "comment"

在 oracle 中执行此操作的最佳方法是什么。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    试试这个:

    select
        key,value,comment
    from mytable
    where key = '11'
    union all
    select 'key1', 'value1', 'default' from dual
    where not exists (select 1 from mytable where key = '11')
    

    【讨论】:

      【解决方案2】:
      WITH defaults ( key, value, comment ) AS (
        SELECT 'key1', 'value1', 'Default' FROM DUAL UNION ALL
        SELECT 'key2', 'value2', 'Default' FROM DUAL UNION ALL
        SELECT 'key3', 'value3', 'Default' FROM DUAL UNION ALL
        SELECT 'key4', 'value4', 'Default' FROM DUAL
      )
      SELECT COALESCE( t.key,     d.key     ) AS key,
             COALESCE( t.value,   d.value   ) AS value,
             COALESCE( t.comment, d.comment ) AS comment
      FROM   defaults d
             FULL OUTER JOIN
             your_table t
             ON ( t.key = d.key );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-05
        • 2020-01-01
        • 2013-09-10
        • 2013-06-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        相关资源
        最近更新 更多