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

UPDATE table_name
SET column_name = CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE default_value
END
WHERE condition;
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' :

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');
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 :

UPDATE table_name
SET column_names = (SELECT column_names FROM subquery)
WHERE condition;
Copier après la connexion

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

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;
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!

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