Présentation
Dans la gestion de bases de données, il est parfois nécessaire de mettre à jour les données d'une table en fonction des ID correspondants dans une autre table. Ceci est particulièrement utile lors de la migration de données ou de la synchronisation d'informations entre des tables.
Description du problème
Supposons que nous ayons une base de données avec deux tables, Sales_Import
et RetrieveAccountNumber
, chaque table contient une colonne nommée LeadID
. La table Sales_Import
a une colonne AccountNumber
qui doit être mise à jour avec la valeur LeadID
correspondante de la table RetrieveAccountNumber
en fonction de la valeur AccountNumber
correspondante.
Tentative échouée
La tentative initiale de mise à jour d'un enregistrement à l'aide de la requête suivante a échoué :
<code class="language-sql">UPDATE [Sales_Lead].[dbo].[Sales_Import] SET [AccountNumber] = (SELECT RetrieveAccountNumber.AccountNumber FROM RetrieveAccountNumber WHERE [Sales_Lead].[dbo].[Sales_Import]. LeadID = RetrieveAccountNumber.LeadID)</code>
Cette requête remplace le numéro de compte par une valeur NULL.
Solution
La solution à ce problème réside dans l'utilisation de la syntaxe UPDATE FROM
combinée aux opérations de jointure. Cette approche nous permet de mettre à jour les enregistrements d'une table en fonction des valeurs correspondantes dans une autre table. Voici les requêtes SQL pour différents systèmes de bases de données :
MySQL et MariaDB
<code class="language-sql">UPDATE Sales_Import SI, RetrieveAccountNumber RAN SET SI.AccountNumber = RAN.AccountNumber WHERE SI.LeadID = RAN.LeadID;</code>
MS SQL
<code class="language-sql">UPDATE Sales_Import SET Sales_Import.AccountNumber = RAN.AccountNumber FROM Sales_Import SI INNER JOIN RetrieveAccountNumber RAN ON SI.LeadID = RAN.LeadID;</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!