[英]PostgreSQL update a table from another one joined as many to many
我有三个表: user
、 image
和user_images_image
(因为前两个与 ManyToMany 相关)。 我想将user
表的profile_pic
设置为从image
表中获取的name
属性的值。
我知道如何为这样的事情构建一个SELECT
查询,但这不是很有帮助......我会写这样的东西:
SELECT "user".id, image.name FROM "user"
LEFT JOIN user_images_image uii ON "user".id = uii."userId"
LEFT JOIN image ON uii."imageId" = image."id"
WHERE "user".id = 2;
在 PostgreSQL 中,我不能像在 MySQL 中那样连接两个表。
我该如何编写这样的查询?
在 Postgres 中,您将使用如下更新/连接语法:
update "user" u
set profile_pic = i.name
from user_images_image uii
inner join image i on uii."imageId" = i."id"
where uii."userId" = u.id and u.id = ? and i.id = ?
如果没有丢失图像,则替代方法是相关子查询:
update "user" u
set profile_pic = (
select i.name
from user_images_image uii
inner join image i on uii."imageId" = i."id"
where uii."userId" = u.id and i.id = ?
)
where u.id = ?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.