MySQL UPDATE语句

时间:2011-06-24 15:20:58

标签: mysql

我有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而不是相应的帐户用户。我是正确还是只是过度思考?基本上,更新是作为一个大批处理还是每个单独评估的行?

1 个答案:

答案 0 :(得分:1)

行的加入方式与SELECT中的行相同,因此每个c都会与其对应的a匹配。