我有2张桌子,电话和帐户。个人“呼叫”具有父“帐户”,并且两个表都具有“分配的用户”列,以便可以将呼叫和帐户分配给特定的人。在数据库清理过程中,我们希望将每个呼叫的分配用户设置为相应帐户的分配用户。不幸的是,我们没有可以使用的测试数据库,我想在这里为每个人运行此更新语句,以确保它不会产生不希望的结果。我唯一担心的是SET语句可能会为所有调用设置相同的用户,而不是为每个调用拉动已分配的用户。这是:
UPDATE
FROM calls AS c
INNER JOIN accounts AS a ON c.parent_id=a.id
SET c.assigned_user_id=a.assigned_user_id
WHERE c.status='PLANNED'
c.status只是一个标志,只能改变未来('PLANNED')的电话而不是过去的电话
我担心的是,如果我将分配给X的帐户A和分配给Y的帐户B分配给Z,那么当更新执行时,它们都将被分配给Z而不是相应的帐户用户。我是正确还是只是过度思考?基本上,更新是作为一个大批处理还是每个单独评估的行?
答案 0 :(得分:1)
行的加入方式与SELECT
中的行相同,因此每个c
都会与其对应的a
匹配。