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

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