Maison >base de données >tutoriel mysql >Comment puis-je simuler l'upserting dans Microsoft Access à l'aide de SQL ?

Comment puis-je simuler l'upserting dans Microsoft Access à l'aide de SQL ?

DDD
DDDoriginal
2025-01-19 20:21:12816parcourir

How Can I Simulate Upserting in Microsoft Access Using SQL?

Simuler l'opération Upsert dans Microsoft Access

Normalement, l'insertion et la mise à jour de lignes dans un tableau sont deux processus indépendants. Mais que se passe-t-il si vous souhaitez effectuer les deux opérations en une seule requête ? Cette opération est souvent appelée « Upsert ».

Dans Microsoft Access 2000 et versions ultérieures, vous pouvez utiliser une requête UPDATE avec un LEFT JOIN pour simuler une opération Upsert. La syntaxe est la suivante :

<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 :

  • Le tableau "b" correspond aux nouvelles données que vous souhaitez insérer ou mettre à jour.
  • Table "a" est une table existante sur laquelle vous souhaitez opérer.
  • Une jointure à gauche garantit que toutes les lignes qui n'existent pas dans le tableau "a" sont automatiquement jointes avec des valeurs NULL.

Donc, si une ligne avec l'ID b.id existe dans le tableau "a", cette ligne sera mise à jour avec la valeur du tableau "b". Dans le cas contraire, une nouvelle ligne sera insérée dans le tableau « a ».

Exemple :

Considérez la forme suivante :

<code>| 表 "a" | 表 "b" |
|---|---|
| ID | Field1 | ID | Field1 |
| 1 | ValueA1 | 1 | ValueB1 |
| 2 | ValueA2 | 2 | ValueB2 |
| 3 | ValueA3 | 3 | ValueB3 |
|   |         | 4 | ValueB4 |</code>

L'exécution de la requête UPDATE ci-dessus entraînera la table mise à jour suivante "a" :

<code>| ID | Field1 |
|---|---|
| 1 | ValueB1 |
| 2 | ValueB2 |
| 3 | ValueB3 |
| 4 | ValueB4 |  **(ID = 4 的新行已插入)**</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!

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