ホームページ >データベース >mysql チュートリアル >同じ PostgreSQL クエリ内で計算列を使用するにはどうすればよいですか?
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_1
と total_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 サイトの他の関連記事を参照してください。