我从 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)
在 中activities
,trackable_id
是messages
表的外键。所以我需要在活动表中为一些消息设置权限created_at
和updated_at
时间。
所以基本上activity
表格是表格的副本,messages
但只是另一种格式。
如何更新活动表中某些消息 ID 的 created_at 和 updated_at,但使用消息表中的数据(数据为 updated_at 和 created_at)?
您似乎没有在 where 子句中加入您的activities
和messages
表。更正确的语法是:
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)