2011-06-24 2 views
0

J'ai 2 tables, appels et comptes. Les "appels" individuels ont un "compte" parent et les deux tables ont une colonne "utilisateur assigné" de sorte que les appels et les comptes peuvent être affectés à des personnes spécifiques. Dans le processus de nettoyage de base de données, nous voulons définir l'utilisateur affecté de chaque appel à l'utilisateur affecté du compte correspondant. Malheureusement, nous n'avons pas de base de données de test avec laquelle travailler et je voulais que cette mise à jour soit exécutée par tout le monde ici pour s'assurer que cela n'aurait pas de résultats non désirés. Ma seule crainte est que l'instruction SET définisse peut-être le même utilisateur pour TOUS les appels au lieu de tirer sur l'utilisateur assigné pour chacun d'eux. Ici, il est:Instruction MySQL UPDATE

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 est tout simplement un drapeau pour changer seul avenir (« PRÉVU ») appelle pas ceux dans le passé

Ma crainte est que si je compte A attribué à X et le compte B attribué à Y et le compte C attribué à Z que lorsque la mise à jour sera exécutée, ils seront tous assignés à Z au lieu de l'utilisateur du compte correspondant. Est-ce que je suis correct ou juste en train de trop réfléchir? Essentiellement, les mises à jour sont-elles traitées comme un gros lot ou chaque rangée est-elle évaluée individuellement?

Répondre

1

Les lignes sont jointes de la même manière que dans SELECT, de sorte que chaque c correspondra à a correspondant.