Penggunaan alias lajur dalam pernyataan SQL SELECT dalam ungkapan seterusnya
Dalam SQL, anda mungkin menghadapi situasi di mana anda ingin menggunakan alias lajur dalam ungkapan seterusnya dalam pernyataan SELECT yang sama. Walau bagaimanapun, percubaan untuk melakukan ini mungkin menghasilkan ralat yang serupa dengan yang diterangkan dalam soalan.
Sebab pengehadan ini ialah alias lajur diproses bersama apabila pernyataan SELECT dinilai. Oleh itu, alias tidak tersedia dalam pernyataan SELECT yang sama.
Penyelesaian: Merangkumkan pertanyaan dalam subkueri
Untuk menyelesaikan masalah ini, anda boleh merangkum pertanyaan asal dalam subkueri. Ini mewujudkan skop baharu di mana alias lajur boleh digunakan di luar subkueri.
Berikut ialah cara untuk mengubah suai pertanyaan untuk menggunakan alias lajur avg_time dan cnt dalam ungkapan ROUND(avg_time * cnt, 2):
<code class="language-sql">SELECT stddev_time, max_time, avg_time, min_time, cnt, ROUND(avg_time * cnt, 2) as slowdown FROM ( SELECT COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, MAX(time) as max_time, ROUND(AVG(time), 2) as avg_time, MIN(time) as min_time, COUNT(path) as cnt, path FROM loadtime GROUP BY path ORDER BY avg_time DESC LIMIT 10 ) X;</code>
Dengan merangkum pertanyaan dalam subkueri, alias boleh digunakan dalam pernyataan SELECT luar, membolehkan anda berjaya menilai ungkapan ROUND(avg_time * cnt, 2).
Atas ialah kandungan terperinci Bolehkah saya Menggunakan Alias Lajur dalam Ungkapan Seterusnya Dalam Pernyataan SELECT SQL yang Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!