Utiliser une requête simulée pour effectuer une opération Upsert dans Microsoft Access
Dans Microsoft Access, l'opération Upsert (mettre à jour la ligne si elle existe, insérer la ligne si elle n'existe pas) peut être simulée à l'aide de la requête UPDATE combinée avec LEFT JOIN. Cette approche permet à une seule requête de gérer les deux cas.
Pour effectuer une opération Upsert, suivez ces étapes :
<code class="language-sql">UPDATE ... SET <column1> = <value1>, <column2> = <value2>, ... WHERE <key_column> = <key_value></code>
<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 cet exemple, le tableau b représente la source des nouvelles valeurs et le tableau a représente le tableau cible. LEFT JOIN associe les lignes correspondantes de deux tables en fonction d'un identifiant de colonne commun.
Cette requête combinée tentera d'abord de mettre à jour les lignes existantes du tableau a dont la colonne d'identifiant correspond au tableau b. Si aucune ligne correspondante n'est trouvée dans le tableau a, la nouvelle valeur est insérée en tant que nouvelle ligne.
Vous pouvez également utiliser le formulaire de requête suivant pour une compréhension plus facile :
<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>
Cela émule le comportement d'Upsert en essayant d'abord de mettre à jour la ligne et en insérant une nouvelle ligne si la jointure ne correspond à aucune ligne existante dans main_table.
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!