Mise à jour des lignes de table PostgreSQL à l'aide d'une sous-requête
Considérez un scénario dans lequel vous avez une table existante dans une base de données Postgres et vous devez mettre à jour ses lignes en utilisant les valeurs obtenues à partir d'une sous-requête. Cette tâche peut être accomplie à l'aide d'une instruction de mise à jour concise.
Dans ce cas particulier, l'objectif est de mettre à jour les lignes de la table factice en utilisant les valeurs extraites d'une sous-requête complexe qui joint plusieurs tables (cust_original, supp_original et Partner_original ) et applique une logique conditionnelle pour déterminer les valeurs des colonnes client, fournisseur et partenaire.
Pour effectuer cette mise à jour, vous pouvez utiliser les éléments suivants syntaxe :
UPDATE dummy SET customer = subquery.customer, supplier = subquery.supplier, partner = subquery.partner FROM ( SELECT address_id, CASE WHEN cust.addr1 IS NOT NULL THEN TRUE ELSE FALSE END AS customer, CASE WHEN suppl.addr1 IS NOT NULL THEN TRUE ELSE FALSE END AS supplier, CASE WHEN partn.addr1 IS NOT NULL THEN TRUE ELSE FALSE END AS partner FROM address AS pa LEFT OUTER JOIN cust_original AS cust ON (pa.addr1 = cust.addr1 AND pa.addr2 = cust.addr2 AND pa.city = cust.city AND pa.state = cust.state AND SUBSTRING(cust.zip, 1, 5) = pa.zip) LEFT OUTER JOIN supp_original AS suppl ON (pa.addr1 = suppl.addr1 AND pa.addr2 = suppl.addr2 AND pa.city = suppl.city AND pa.state = suppl.state AND pa.zip = SUBSTRING(suppl.zip, 1, 5)) LEFT OUTER JOIN partner_original AS partn ON (pa.addr1 = partn.addr1 AND pa.addr2 = partn.addr2 AND pa.city = partn.city AND pa.state = partn.state AND pa.zip = SUBSTRING(partn.zip, 1, 5)) WHERE pa.address_id = address_id ) AS subquery WHERE dummy.address_id = subquery.address_id;
Cette instruction exploite une sous-requête pour dériver les valeurs des colonnes client, fournisseur et partenaire. La sous-requête effectue les jointures et la logique conditionnelle nécessaires comme spécifié dans l'instruction d'insertion fournie.
L'instruction externe UPDATE applique ensuite ces valeurs dérivées de la sous-requête aux colonnes correspondantes de la table factice, mettant à jour les lignes existantes en fonction de la champ adresse_id.
Cette approche est particulièrement utile lorsque vous devez mettre à jour les lignes d'un tableau en fonction de valeurs dérivées de calculs complexes ou dynamiques ou lorsque vous travaillez avec de grands ensembles de données où Les mises à jour traditionnelles ligne par ligne peuvent être inefficaces.
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!