使用连接更新表,如果不存在则为 NULL
Posted
技术标签:
【中文标题】使用连接更新表,如果不存在则为 NULL【英文标题】:Update table with join and if does not exists then NULL 【发布时间】:2016-11-21 15:25:45 【问题描述】:我有一个包含 pid_name 列 varchar(40) 的主表,我想用另一个表进程的 pname 更新该 pid_name 列。 Processes 表有 2 列 pid 和 pname,有 100 个不同的行。 主表中的 pid 具有超过 50K 个不同的 pid_name 值。我想用进程表中的所有值和进程表中不存在的 NULL 更新 pid_name。我正在使用 Redshift 数据库。提前致谢示例数据
更新前的主表
ID Pid_name
1 abc
2 def
3 ghi
处理表pid pname
abc Process_1
def Process_2
更新后主表中的预期输出ID Pid_name
1 Process_1
2 Process_2
3 NULL
(因为它在进程表中不存在)
【问题讨论】:
【参考方案1】:UPDATE master
SET pid_name =
(SELECT pname
FROM processes p
WHERE p.pid = master.pid_name);
【讨论】:
感谢您回答劳伦斯!但是,如果进程表中不存在 pid,这不会将我的 pid_name 更新为 null。 完美!非常感谢以上是关于使用连接更新表,如果不存在则为 NULL的主要内容,如果未能解决你的问题,请参考以下文章
SQLite 选择过去 7 天(周)的数据,如果不存在,则为空/零
如果右侧表中不存在日期,则使用 LEFT JOIN 返回 NULL