Rumah >pangkalan data >tutorial mysql >Bagaimanakah saya boleh menggunakan lajur yang dikira dalam pertanyaan yang sama dalam PostgreSQL?

Bagaimanakah saya boleh menggunakan lajur yang dikira dalam pertanyaan yang sama dalam PostgreSQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-14 06:08:47440semak imbas

How Can I Use Calculated Columns Within the Same Query in PostgreSQL?

PostgreSQL: Menggunakan Lajur Dikira Dengan Cekap Dalam Satu Pertanyaan

PostgreSQL, sistem pengurusan pangkalan data hubungan yang berkuasa, menawarkan keupayaan manipulasi data yang teguh. Walau bagaimanapun, menggunakan lajur yang dikira dalam satu pertanyaan berbeza daripada beberapa sistem pangkalan data lain. Jom terokai nuansa ini.

Pertimbangkan pendekatan seperti SQL ini, yang cuba menggunakan lajur yang dikira terus dalam pertanyaan utama:

<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>

Ini akan gagal dalam PostgreSQL. Ralat timbul kerana total_1 dan total_2 tidak diiktiraf sebagai lajur sedia ada pada titik di mana total_3 dikira.

Penyelesaian melibatkan penggunaan ungkapan jadual biasa (CTE) atau subkueri untuk menyediakan lajur pengiraan perantaraan. Begini cara untuk mencapainya menggunakan 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>

Pertanyaan yang disemak ini mula-mula mentakrifkan CTE, calculated_totals, yang mengira total_1 dan total_2. Pertanyaan utama kemudiannya merujuk lajur yang dikira ini daripada CTE untuk mengira total_3. Pendekatan ini memastikan pengiraan yang betul tanpa overhed prestasi. Menggunakan CTE biasanya lebih disukai untuk kebolehbacaan dan kebolehselenggaraan dalam pertanyaan kompleks. Penggunaan CTE atau subkueri dalam senario ini tidak menjejaskan prestasi secara negatif.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menggunakan lajur yang dikira dalam pertanyaan yang sama dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn