我试图更新我的数据库中的所有行,以将name(last,first)拆分为last_name,first_name和display_name,但我不确定从哪里获得正在更新的当前行的id。我当前的sql脚本沿着如下:
UPDATE user_profile
SET last_name=(SELECT split_part(display_name,',',1)
FROM user_profile WHERE id=<current_id>;)
WHERE last_name IS Null;
1条答案
按热度按时间pod7payv1#
你不需要指定当前行id,普通的
update
是在每行上下文中操作的,如果你使用对display_name
的引用,它会假设你指的是当前行中的行。您还可以一次拆分为两个字段:
coalesce()
返回其参数列表中的第一个非空值,因此如果字段已经填充,则不会更改它。Online demo
如果您确实需要,可以为表的两个示例设置别名并匹配它们,就像处理任何其他表一样
你不一定要用subselect来完成
当您想要特别引用同一个表中的某个*其他行时,这非常方便。