【发布时间】:2015-04-14 11:51:21
【问题描述】:
我已从 mysql 迁移到 psql,但发现使用多个左连接很难理解 UPDATE 语句。
你会如何在 Postgres 中重写它? (我使用的是 postresql 9.4)
update task t
left join project p on t.project_id = p.id
left join client c on t.client_id = c.id
left join user u on t.user_id = u.id
set t.project_name = p.name,
t.client_name = c.name,
t.user_name = u.name;
欢迎任何指针。
【问题讨论】:
-
所有示例仅指一个连接。我需要做多个连接。
-
一表连接和多表连接在语法上没有区别
-
您只使用左连接,是否有意 - 将任务表中没有
project的行更新为空?与project的内部连接类似于UPDATE task SET project_name = p.NAME ,client_name = c.NAME ,user_name = u.NAME FROM project p ON task.project_id = p.id LEFT JOIN client c ON task.client_id = c.id LEFT JOIN user u ON task.user_id = u.id;。要将LEFT JOIN与project一起使用,请执行自连接任务或在SET部分中使用子查询...
标签: postgresql sql-update postgresql-9.4