Maison > base de données > tutoriel mysql > Comment puis-je mettre à jour efficacement plusieurs lignes dans PostgreSQL à l'aide d'une seule requête ?

Comment puis-je mettre à jour efficacement plusieurs lignes dans PostgreSQL à l'aide d'une seule requête ?

DDD
Libérer: 2025-01-12 22:46:44
original
419 Les gens l'ont consulté

How Can I Efficiently Update Multiple Rows in PostgreSQL Using a Single Query?

Mises à jour à requête unique dans PostgreSQL : une amélioration des performances

PostgreSQL, comme de nombreux systèmes de bases de données, propose des méthodes efficaces pour mettre à jour plusieurs lignes simultanément à l'aide d'une seule requête. Cette approche améliore considérablement les performances, en particulier lorsqu'il s'agit de jeux de données volumineux.

L'instruction UPDATE avec la clause SET fournit une méthode simple pour les mises à jour conditionnelles. Par exemple, pour modifier column_a en fonction de différentes valeurs dans column_b, vous pouvez utiliser cette syntaxe concise :

<code class="language-sql">UPDATE table_name
SET column_a = 1 WHERE column_b = '123',
    column_a = 2 WHERE column_b = '345';</code>
Copier après la connexion

Cependant, pour les mises à jour plus complexes impliquant plusieurs colonnes, la construction UPDATE ... FROM offre une flexibilité supérieure. Cela implique de construire une table de mappage temporaire pour spécifier les mises à jour.

Illustrons avec un exemple mettant à jour à la fois column_a et column_c en fonction de column_b :

<code class="language-sql">UPDATE test AS t
SET column_a = c.column_a,
    column_c = c.column_c
FROM (VALUES
    ('123', 1, '---'),
    ('345', 2, '+++')
) AS c(column_b, column_a, column_c)
WHERE c.column_b = t.column_b;</code>
Copier après la connexion

Cette requête exploite une clause VALUES pour définir la table de mappage c, liant efficacement les nouvelles valeurs aux lignes existantes dans test en fonction des valeurs column_b correspondantes. Cette approche simplifiée permet des mises à jour efficaces sur plusieurs colonnes au sein d'une seule requête.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal