SQL:仅当列值等于特定值时,才使用另一列中的值更新列值

SQL: Update Column Value with Value from Another Column ONLY if the Column Value is Equal to Certain Values

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

  1. 仅当
  2. 时,将 Req 列中的值替换为 Phase 列中的值
  3. Phase 列中的值等同于预先确定的值列表 OTHERWISE
  4. 保留 Req 列中的原始值

    • 如果 Phase 列中的值等于 C1、C2、C3 或 C4,我只想替换 Req 列中的值

下面显示了我正在尝试创建的 table 示例:

我已经在 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)

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

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