Menggunakan lajur yang dikira dalam pertanyaan yang sama dalam PostgreSQL
PostgreSQL tidak membenarkan pengiraan menggunakan alias secara langsung dalam pernyataan SELECT
yang sama. Sebagai contoh, pernyataan SQL berikut akan melaporkan ralat:
<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 kerana apabila PostgreSQL mengira total_3
, total_1
dan total_2
belum ditakrifkan lagi.
Penyelesaian adalah dengan menggunakan subkueri (jadual terbitan):
<code class="language-sql">SELECT cost_1, 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>
Dengan mencipta subkueri t
, kami mentakrifkan total_1
dan total_2
sebagai lajur yang tersedia dalam pernyataan SELECT
luar. Tiada penalti prestasi dengan pendekatan ini. Pertanyaan luar merujuk set hasil pertanyaan dalam supaya total_3
boleh dikira dengan betul.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Lajur Dikira daripada Pertanyaan Yang Sama dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!