如何解决PostgreSQL从另一个表中更新了一个表,该表连接了许多对
我有三个表:user
,image
和user_images_image
(前两个与ManyToMany相关)。我想将profile_pic
表的user
设置为从name
表获取的image
属性的值。
我知道如何为这样的事情建立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 / join语法:
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 = ?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。