首頁 >資料庫 >mysql教程 >如何在 PostgreSQL 查詢中使用計算列而不出錯?

如何在 PostgreSQL 查詢中使用計算列而不出錯?

Patricia Arquette
Patricia Arquette原創
2025-01-14 06:06:42555瀏覽

How Can I Use Calculated Columns in PostgreSQL Queries Without Errors?

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_1total_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_1total_2 的計算巢狀在內部 SELECT 語句(別名為 t)中,它們變得可存取並可用於外部 SELECT 語句中的進一步計算。此方法提供了一種實用且高效的方法來處理 PostgreSQL 中的計算列,而不會產生顯著的效能開銷。

以上是如何在 PostgreSQL 查詢中使用計算列而不出錯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn