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

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

Linda Hamilton
Libérer: 2025-01-12 22:37:47
original
849 Les gens l'ont consulté

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

PostgreSQL : rationaliser les mises à jour de plusieurs lignes

PostgreSQL offre des méthodes efficaces pour mettre à jour plusieurs lignes simultanément, un avantage significatif lorsqu'il s'agit de jeux de données volumineux ou de conditions de mise à jour complexes. Contrairement aux instructions UPDATE individuelles par ligne du SQL traditionnel, PostgreSQL propose deux alternatives supérieures :

Approche 1 : Mises à jour conditionnelles avec CASE

L'expression CASE permet d'attribuer différentes valeurs aux lignes en fonction de critères spécifiques. La structure de l'instruction UPDATE est :

<code class="language-sql">UPDATE table_name
SET column_name = CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE default_value
END
WHERE condition;</code>
Copier après la connexion

Par exemple, pour définir column_a sur 1 où column_b est '123' et sur 2 où column_b est '345' :

<code class="language-sql">UPDATE table_name
SET column_a = CASE
    WHEN column_b = '123' THEN 1
    WHEN column_b = '345' THEN 2
    ELSE column_a  -- Retain original value if condition not met
END
WHERE column_b IN ('123', '345');</code>
Copier après la connexion

Approche 2 : UPDATE...FROM pour des mises à jour concises

La construction UPDATE...FROM utilise une table ou une sous-requête distincte pour définir les valeurs de mise à jour, ce qui donne un code plus propre et plus lisible. La syntaxe est :

<code class="language-sql">UPDATE table_name
SET column_names = (SELECT column_names FROM subquery)
WHERE condition;</code>
Copier après la connexion

Appliquer ceci à l'exemple précédent :

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

Ces techniques PostgreSQL améliorent considérablement l'efficacité et la clarté du code par rapport aux UPDATE instructions individuelles, en particulier pour la manipulation de données à grande échelle.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal