ホームページ > データベース > mysql チュートリアル > 同じ PostgreSQL クエリ内で計算列を使用するにはどうすればよいですか?

同じ PostgreSQL クエリ内で計算列を使用するにはどうすればよいですか?

DDD
リリース: 2025-01-14 08:40:42
オリジナル
167 人が閲覧しました

How Can I Use Calculated Columns in the Same PostgreSQL Query?

PostgreSQL 計算列: 実践ガイド

単一の PostgreSQL クエリ内で計算列を操作すると、問題が発生する場合があります。 他の SQL データベースとは異なり、PostgreSQL の計算列の処理には特定のアプローチが必要です。

SQL 構文の非互換性への対処

次の SQL コードは、他の多くのデータベース システムでは機能しますが、PostgreSQL では失敗します。

<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
FROM data;</code>
ログイン後にコピー

PostgreSQL は、total_1total_2 が未定義であることを報告します。これは、PostgreSQL が計算列をクエリの実行に対して一時的なエイリアスとして扱うためです。

効果的な解決策: 派生テーブルの活用

解決策には、派生テーブル (またはサブクエリ) を使用してこの制限を克服することが含まれます。

<code class="language-sql">SELECT cost_1, quantity_1, cost_2, quantity_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>
ログイン後にコピー

最初の SELECT ステートメントを派生テーブル (t というエイリアス) 内でネストすることにより、外部クエリは total_1 および total_2 エイリアスを正常に参照できるようになります。 この方法では、パフォーマンスのオーバーヘッドが発生しません。

以上が同じ PostgreSQL クエリ内で計算列を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート