从SQL Server迁移至PostgreSQL如何编写带左连接空条件的UPDATE查询
PostgreSQL 对应UPDATE语句实现方案
你提供的SQL Server UPDATE语句核心逻辑是更新table1中与table2无匹配关联的记录的col1字段为xx,PostgreSQL有两种常用的正确写法:
写法1:和原有SQL写法差异最小(支持FROM子句)
PostgreSQL原生支持UPDATE语句带FROM子句,不需要做大的调整,注意不要重复声明待更新的表即可:
UPDATE table1 t1 SET col1 = 'xx' FROM table2 t2 WHERE t1.id = t2.id (+) AND t2.id IS NULL;
写法2:NOT EXISTS 写法(更推荐)
该写法语义更清晰,数据库优化器也更容易生成最优执行计划,执行效率通常更高:
UPDATE table1 t1 SET col1 = 'xx' WHERE NOT EXISTS ( SELECT 1 FROM table2 t2 WHERE t1.id = t2.id );
两种写法的执行效果和你原SQL Server语句完全一致,可根据自己的使用习惯选择。
内容的提问来源于stack exchange,提问作者John Sari
相关产品推荐
相关产品推荐

