复杂的更新查询 postgres

Gan*_*row 2 postgresql

我从 table 中得到了一堆 id messages,我想更新 table activities。这就是我想象我的查询会起作用的方式(因此您可以更好地了解我要完成的任务):

update activities
set activities.created_at = messages.created_at,
set activities.updated_at = messages.updated_at
from messages
where messages.id in (1,2,3)
activities.trackable_id in (1,2,3)
Run Code Online (Sandbox Code Playgroud)

在 中activitiestrackable_idmessages表的外键。所以我需要在活动表中为一些消息设置权限created_atupdated_at时间。

所以基本上activity表格是表格的副本,messages但只是另一种格式。

如何更新活动表中某些消息 ID 的 created_at 和 updated_at,但使用消息表中的数据(数据为 updated_at 和 created_at)?

cha*_*cha 5

您似乎没有在 where 子句中加入您的activitiesmessages表。更正确的语法是:

update activities
set created_at = messages.created_at,
updated_at = messages.updated_at
from messages
where messages.id = activities.trackable_id
  AND messages.id in (1,2,3)
Run Code Online (Sandbox Code Playgroud)