Maison >base de données >tutoriel mysql >Comment simuler un Upsert dans Microsoft Access à l'aide de UPDATE et LEFT JOIN ?

Comment simuler un Upsert dans Microsoft Access à l'aide de UPDATE et LEFT JOIN ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-19 20:12:09642parcourir

How to Simulate an Upsert in Microsoft Access Using UPDATE and LEFT JOIN?

Insérer ou mettre à jour (Upsert) dans Microsoft Access

Question :

Dans Microsoft Access 2000, vous souhaitez effectuer une opération qui met à jour une ligne si elle existe et insère une nouvelle ligne si elle n'existe pas.

Solution :

Utilisez UPDATE et LEFT JOIN pour simuler Upsert

Vous pouvez simuler un upsert dans Access en utilisant une requête UPDATE avec un LEFT JOIN. La requête utilise LEFT JOIN pour vérifier s'il existe une ligne existante, puis met à jour ou insère en conséquence :

<code class="language-sql">UPDATE b
LEFT JOIN a ON b.id = a.id
SET a.f1 = b.f1,
    a.f2 = b.f2,
    a.f3 = b.f3;</code>

Dans cette requête, "b" représente de nouvelles données et "a" représente une table existante. S'il existe une ligne correspondante dans « a », la requête met à jour la valeur dans « a » avec la valeur correspondante dans « b ». Sinon, la requête insère une nouvelle ligne dans « a » en utilisant la valeur de « b ».

Exemple simplifié :

Pour plus de clarté, voici une version simplifiée de la requête :

<code class="language-sql">UPDATE main_table RIGHT JOIN new_data 
    ON main_table.id = new_data.id
SET
    main_table.id = new_data.id,
    main_table.col_1 = new_data.col_1,
    main_table.col_2 = new_data.col_2;</code>

Cette requête mettra à jour ou insérera des lignes dans "main_table" en fonction des valeurs de "new_data". La colonne "id" est la condition de correspondance et les valeurs mises à jour ou insérées sont "col_1" et "col_2".

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn