SQL-如果执行某项操作,则什么也不做

时间:2019-07-30 08:58:16

标签: sql if-statement case case-when

我在表1中有一列具有许多null的列,但是现在又有一个值。如果有一个值,我想转到表2并从那里获取相应的值。这应该创建一个名为user_original的额外列:

CASE
   WHEN table1.user_changed IS NOT NULL 
      THEN table2.user_original 
      ELSE -- do nothing  
END as user_original

我基本上想替换

  

没什么

这是正确的吗?如何才能做到这一点?有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

您是不是需要

 CASE
    WHEN table1.user_changed IS NOT NULL 
   THEN table2.user_original
    END as user_original

答案 1 :(得分:0)

您要关联子查询吗?

(CASE WHEN table1.user_changed IS NOT NULL 
      THEN (SELECT table2.user_original FROM table2 WHERE table2.? = table1.?) 
 END) as user_original

?用于标识“相应”值的列。

在这种情况下,您可以将其简化为:

(SELECT table2.user_original FROM table2 WHERE table2.? = table1.?) as user_original

我的猜测是,如果原始值为NULL,将没有匹配的值。