【问题标题】:Insert if condition in case插入 if 条件以防万一
【发布时间】:2012-12-10 14:26:24
【问题描述】:

在我的 sql 脚本中,我有这个:

insert into @res
    select
    case
            when x = 'tblDoll' then (...)
            when x = 'tblCar' then (...)
            when x = 'tblRocket' then
                if rel_table_id = @old_id
                    (select x.price from tableInDb x where x.id = rel_table.toy_id)
    end
        from rel_table
        where my_toy_id = @toy_id

@old_id 是一个输入参数。

但 if 中的某些内容返回语法错误。 rel_table_id 是 rel_table 的 id。如何在其中放置 if 条件?

【问题讨论】:

    标签: sql sql-server tsql syntax


    【解决方案1】:

    JOIN 两个表,更多嵌套的CASE 表达式如下:

    INSERT INTO @res
    SELECT 
      CASE
        WHEN x = 'tblDoll'               THEN  (...)
        WHEN x = 'tblCar'                THEN  (...)
        WHEN x = 'tblRocket'             THEN  
          CASE WHEN rel_table_id = @old_id THEN  x.price END
      END
    FROM rel_table t1
    INNER JOIN tableInDb x ON x.id = rel_table.toy_id
    

    【讨论】:

    • 需要给 tableInDb 起别名,不要像使用 x 那样使用它
    • @Blam - 现已修复。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 2011-12-22
    • 2017-01-16
    • 2020-11-23
    相关资源
    最近更新 更多