PostgreSQL 計算列: 制限事項の回避策
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 -- Error: total_1 and total_2 are not found FROM data;</code>
このエラーは、PostgreSQL がクエリを行ごとに処理するために発生します。 total_1
と total_2
は、同じ SELECT
ステートメント内での後続の計算には使用できません。
この解決策には、サブクエリ (派生テーブル) を使用して最初の計算をカプセル化することが含まれます。 これにより、結果を外部クエリで参照できるようになります:
<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>
内側の total_1
ステートメント (total_2
というエイリアス) 内で SELECT
と t
の計算をネストすることにより、外側の SELECT
ステートメントでのさらなる計算にアクセスして使用できるようになります。この方法は、大幅なパフォーマンスのオーバーヘッドを発生させることなく、PostgreSQL の計算列を操作する実用的かつ効率的な方法を提供します。
以上がPostgreSQL クエリで計算列をエラーなく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。