Maison > base de données > tutoriel mysql > Comment puis-je utiliser les colonnes calculées dans les requêtes PostgreSQL sans erreurs ?

Comment puis-je utiliser les colonnes calculées dans les requêtes PostgreSQL sans erreurs ?

Patricia Arquette
Libérer: 2025-01-14 06:06:42
original
552 Les gens l'ont consulté

How Can I Use Calculated Columns in PostgreSQL Queries Without Errors?

Colonnes calculées PostgreSQL : solutions de contournement pour les limitations

La gestion des colonnes calculées par PostgreSQL diffère des autres systèmes de bases de données. Le référencement direct des colonnes calculées ultérieurement dans la même requête n’est pas pris en charge. Cette limitation est démontrée par l'exemple suivant, qui produira une erreur :

<code class="language-sql">SELECT cost_1, quantity_1, cost_2, quantity_2, 
       (cost_1 * quantity_1) AS total_1,
       (cost_2 * quantity_2) AS total_2,
       (total_1 + total_2) AS total_3  -- Error: total_1 and total_2 are not found
FROM data;</code>
Copier après la connexion

L'erreur survient parce que PostgreSQL traite la requête ligne par ligne ; total_1 et total_2 ne sont pas disponibles pour les calculs ultérieurs au sein de la même instruction SELECT.

La solution consiste à utiliser une sous-requête (table dérivée) pour encapsuler les calculs initiaux. Cela permet de référencer les résultats dans la requête externe :

<code class="language-sql">SELECT cost_1, quantity_1, cost_2, quantity_2, total_1, total_2,
       total_1 + total_2 AS total_3
FROM (
    SELECT cost_1, quantity_1, cost_2, quantity_2, 
           (cost_1 * quantity_1) AS total_1,
           (cost_2 * quantity_2) AS total_2
    FROM data
) AS t;</code>
Copier après la connexion

En imbriquant les calculs de total_1 et total_2 dans l'instruction interne SELECT (alias t), ils deviennent accessibles et utilisables pour d'autres calculs dans l'instruction SELECT externe. Cette méthode fournit un moyen pratique et efficace de travailler avec des colonnes calculées dans PostgreSQL sans surcharge de performances significative.

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