SQL:仅当列值等于某些值时,才使用另一列的值更新列值

时间:2017-11-13 17:24:28

标签: sql if-statement replace conditional

这是我试图在SQL代码中实现的逻辑:

  1. 将Req列中的值替换为Phase only IFLY IF
  2. 中的值
  3. “相位”列中的值相当于预定的值列表OTHERWISE
  4. 将原始值保留在Req列

    • 如果Phase列中的值等于C1,C2,C3或C4
    • ,我只想替换Req列中的值
  5. 下面显示了我正在尝试创建的表的示例:

    enter image description here

    我已经在Python代码中成功实现了上述功能(见下文)。但现在我需要对SQL做同样的事情而且我被卡住了。

    phasename_dictionary = {'C1':'C1', 'C2':'C2', 'C3':'C3', 'C4':'C4'}
    df.loc[df['phase'].isin(phasename_dictionary.keys()), 'req'] = df['phase'].map(phasename_dictionary)
    

1 个答案:

答案 0 :(得分:0)

您可以使用带有update子句的简单where语句来实现此目的:

UPDATE mytable
SET    req = phase
WHERE  phase IN ('C1', 'C2', 'C3', 'C4')