在PostgreSQL中使用相同查詢中的計算列
PostgreSQL不允許直接在同一SELECT
語句中使用別名進行計算。 例如,以下SQL語句會報錯:
<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_3
時,total_1
和total_2
尚未被定義。
解決方法是使用子查詢(派生表):
<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 ) t;</code>
透過建立子查詢t
,我們將total_1
和total_2
在外部SELECT
語句中定義為可用的欄位。這種方法不會帶來性能損失。 外部查詢引用內部查詢的結果集,因此可以正確計算total_3
。
以上是如何在 PostgreSQL 中使用相同查詢的計算列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!