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!