SQL:仅当列值等于特定值时,才使用另一列中的值更新列值
SQL: Update Column Value with Value from Another Column ONLY if the Column Value is Equal to Certain Values
这是我试图在 SQL 代码中实现的逻辑:
- 仅当
时,将 Req 列中的值替换为 Phase 列中的值
- Phase 列中的值等同于预先确定的值列表 OTHERWISE
保留 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')
这是我试图在 SQL 代码中实现的逻辑:
- 仅当 时,将 Req 列中的值替换为 Phase 列中的值
- Phase 列中的值等同于预先确定的值列表 OTHERWISE
保留 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')