PostgreSQL:在單一查詢中有效使用計算列
PostgreSQL 是一個強大的關聯式資料庫管理系統,提供強大的資料操作功能。 但是,在單一查詢中使用計算列與某些其他資料庫系統不同。 讓我們來探討一下這個細微差別。
考慮這種類似 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_1
和 total_2
在計算 total_3
時未被辨識為現有欄位。
解決方案涉及使用公共表表達式 (CTE) 或子查詢來使中間計算列可用。 以下是如何使用 CTE 來實現此目的:
<code class="language-sql">WITH calculated_totals AS ( 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 ) SELECT cost_1, quantity_1, cost_2, quantity_2, total_1, total_2, (total_1 + total_2) AS total_3 FROM calculated_totals;</code>
這個修改後的查詢先定義了一個 CTE calculated_totals
,它計算 total_1
和 total_2
。 然後,主查詢引用 CTE 中的這些計算列來計算 total_3
。 這種方法確保了正確的計算而沒有效能開銷。 為了複雜查詢中的可讀性和可維護性,通常首選使用 CTE。 在這種情況下使用 CTE 或子查詢不會對效能產生負面影響。
以上是如何在 PostgreSQL 的相同查詢中使用計算列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!