Utilisez la jointure dans la requête de mise à jour au lieu des colonnes lors de la mise à jour des lignes
P粉170438285
P粉170438285 2023-08-02 12:32:01
0
1
568
<p>更新之前(原始示例表):</p> <table class="s-table"> <thead> <tr> <th>document_id</th> <th>meta_key</th> <th>meta_value</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>iban</td> <td>IBAN123456</td> </tr> <tr> <td>1</td> <td>bankaccount</td> <td>ACCT987654</td> </tr> <tr> <td>2</td> <td>iban</td> <td>IBAN555555</td> </tr> <tr> <td>2</td> <td>bankaccount</td> <td>ACCT444444</td> </tr> <tr> <td>3</td> <td>iban</td> <td>IBAN888888</td> </tr> <tr> <td>3</td> <td>bankaccount</td> <td>ACCT333333</td> </tr> </tbody> </table> <p>运行SQL更新查询后:</p> <table class="s-table"> <thead> <tr> <th>document_id</th> <th>meta_key</th> <th>meta_value</th> </tr> </thead> <tbody> <tr> <td>1</td> <td>iban</td> <td>IBAN123456</td> </tr> <tr> <td>1</td> <td>bankaccount</td> <td>IBAN123456</td> </tr> <tr> <td>2</td> <td>iban</td> <td>IBAN555555</td> </tr> <tr> <td>2</td> <td>bankaccount</td> <td>IBAN555555</td> </tr> <tr> <td>3</td> <td>iban</td> <td>IBAN888888</td> </tr> <tr> <td>3</td> <td>bankaccount</td> <td>IBAN888888</td> </tr> </tbody> </table> <p>我需要一个查询来实现上述表格的结果吗?</p>
P粉170438285
P粉170438285

répondre à tous(1)
P粉826283529

document_id, meta_key, and meta_value. Vous souhaitez mettre à jour la méta_valeur de la ligne dont la méta_clé est le compte bancaire avec la méta_valeur correspondante dans la ligne dont la méta_clé est iban.

Ce qui suit est une requête SQL pour atteindre cet objectif :


UPDATE example_table AS p1
INNER JOIN (
    SELECT document_id, meta_value AS iban
    FROM example_table
    WHERE meta_key = 'iban'
) AS p2 ON p1.document_id = p2.document_id
SET p1.meta_value = p2.iban
WHERE p1.meta_key = 'bankaccount';

  1. La table p1 est un alias de example_table et p2 est un alias de la sous-requête
  2. La sous-requête sélectionne document_id et meta_value lorsque meta_key est 'iban'
  3. La requête principale utilise INNER JOIN pour faire correspondre le document_id entre p1 et la sous-requête p2.
  4. Ensuite, il met à jour la méta_valeur avec meta_key en tant que « compte bancaire » en p1 vers iban en p2.

Avant d'exécuter des requêtes de mise à jour, n'oubliez pas de sauvegarder votre base de données et de la tester dans un environnement sécurisé !


Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal