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

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

Linda Hamilton
Linda Hamiltonoriginal
2025-01-12 22:42:43509parcourir

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

Une requête unique PostgreSQL met à jour plusieurs lignes

Cet article explique comment mettre à jour plusieurs lignes de données à l'aide d'une seule requête dans une base de données PostgreSQL. Bien que PostgreSQL ne prenne pas en charge la mise à jour directe de plusieurs lignes, il existe plusieurs façons d'atteindre cet objectif.

Une approche consiste à utiliser une combinaison de la syntaxe UPDATE ... FROM et d'une table de mappage. Cela permet de mettre à jour plusieurs colonnes et offre une plus grande flexibilité. Le code suivant illustre cette approche :

<code class="language-sql">UPDATE test 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>

Plus de colonnes peuvent être ajoutées selon les besoins :

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

Une autre approche plus propre consiste à utiliser la syntaxe INSERT ... ON CONFLICT ... UPDATE de PostgreSQL, qui combine les fonctionnalités d'insertion et de mise à jour en une seule requête. Cependant, cette méthode nécessite de créer un index unique sur la colonne qui identifie la ligne à mettre à jour.

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