Maison > base de données > tutoriel mysql > Comment mettre à jour les lignes du tableau Postgres à l'aide de sous-requêtes ?

Comment mettre à jour les lignes du tableau Postgres à l'aide de sous-requêtes ?

Linda Hamilton
Libérer: 2025-01-03 18:06:42
original
623 Les gens l'ont consulté

How to Update Postgres Table Rows Using Subqueries?

Mise à jour des lignes du tableau dans Postgres à l'aide de sous-requêtes

Dans Postgres, il est possible d'effectuer des mises à jour sur les lignes du tableau en utilisant des sous-requêtes pour récupérer les valeurs souhaitées pour chaque ligne. Une façon d'y parvenir consiste à utiliser la syntaxe suivante :

UPDATE table_name
SET column_name = (SELECT value FROM subquery WHERE subquery_condition)
WHERE table_condition;
Copier après la connexion

Considérons l'exemple suivant, où l'objectif est de mettre à jour la table factice dans une base de données Postgres 8.4, en remplissant les colonnes client, fournisseur et partenaire. avec des valeurs dérivées d'une sous-requête :

CREATE TABLE public.dummy
(
  address_id SERIAL,
  addr1 character(40),
  addr2 character(40),
  city character(25),
  state character(2),
  zip character(5),
  customer boolean,
  supplier boolean,
  partner boolean
  
)
WITH (
  OIDS=FALSE
);

UPDATE dummy
SET customer = (SELECT
    CASE WHEN cust.addr1 IS NOT NULL THEN TRUE ELSE FALSE END),
    supplier = (SELECT
    CASE WHEN suppl.addr1 IS NOT NULL THEN TRUE ELSE FALSE END),
    partner = (SELECT
    CASE WHEN partn.addr1 IS NOT NULL THEN TRUE ELSE FALSE END)
FROM (
    SELECT *
        FROM address) pa
    LEFT OUTER JOIN cust_original cust
        ON (pa.addr1=cust.addr1 AND pa.addr2=cust.addr2 AND pa.city=cust.city 
            AND pa.state=cust.state AND SUBSTR(cust.zip,1,5) = pa.zip  )
    LEFT OUTER JOIN supp_original suppl 
        ON (pa.addr1=suppl.addr1 AND pa.addr2=suppl.addr2 AND pa.city=suppl.city 
                AND pa.state=suppl.state AND pa.zip = SUBSTR(suppl.zip,1,5))
    LEFT OUTER JOIN partner_original partn
        ON (pa.addr1=partn.addr1 AND pa.addr2=partn.addr2 AND pa.city=partn.city
                  AND pa.state=partn.state AND pa.zip = SUBSTR(partn.zip,1,5) )
WHERE pa.address_id = address_id;
Copier après la connexion

Cette requête met à jour efficacement les colonnes client, fournisseur et partenaire pour chaque ligne de la table factice, en les définissant sur VRAI si l'adresse correspondante est trouvée dans les tables cust_original, supp_original et partenaire_original, ou FALSE dans le cas contraire.

Cette syntaxe n'est pas du SQL standard mais offre une commodité pour mettre à jour les lignes de la table en fonction des valeurs dérivées des sous-requêtes, en particulier dans Postgres.

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