PostgreSQL 查詢中正確使用計算列進行計算
在處理 PostgreSQL 中的資料時,通常需要對列進行計算以得出新的資訊。為此,PostgreSQL 提供了建立計算列的功能,這些計算列可以用作建立它們的相同查詢的一部分。
問題:不正確的 SQL 語法
考慮以下 SQL 語句,它在其他資料庫管理系統 (DBMS) 中有效,但在 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, (calculated total_1 + calculated total_2) as total_3 from data;</code>
PostgreSQL 會引發錯誤,指出欄位 total_1
和 total_2
不存在。
解決方案:將查詢包裝在衍生表中
為了解決這個問題,PostgreSQL 要求將 SELECT 語句包裝在衍生表中:
<code class="language-sql">select cost1, 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>
這種方法可讓您存取派生表中的列別名,包括計算列 total_1
和 total_2
。它不會造成任何性能損失。
注意事項
值得注意的是,允許直接在後續計算中使用計算列的原始 SQL 語句,在 PostgreSQL 或其他 DBMS 中都不建議。它可能導致效能問題並阻礙查詢最佳化。
以上是如何在 PostgreSQL 查詢中使用計算列正確執行計算?的詳細內容。更多資訊請關注PHP中文網其他相關文章!