Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Menggunakan Alias dalam Klausa HAVING SQL?
Memahami Had Penggunaan Alias dalam HAVING Klausa
Dalam SQL, nampaknya intuitif untuk menggunakan alias untuk agregat dalam klausa HAVING. Walau bagaimanapun, pendekatan ini mengakibatkan ralat "Nama lajur tidak sah" disebabkan oleh susunan penilaian khusus pertanyaan SQL.
Untuk memahami had ini, adalah penting untuk memahami cara SQL melaksanakan pertanyaan:
Oleh itu, memandangkan klausa HAVING dinilai sebelum klausa SELECT, alias yang diberikan kepada agregat dalam pernyataan SELECT (cth., "col7") belum diketahui SQL apabila ia menilai ungkapan HAVING. Akibatnya, ralat "Nama lajur tidak sah 'col7'" berlaku.
Sebaliknya, klausa ORDER BY dinilai selepas pernyataan SELECT, membenarkan alias yang ditakrifkan dalam klausa SELECT digunakan. Ini kerana klausa ORDER BY beroperasi pada set hasil yang dicipta oleh pernyataan SELECT.
Untuk membetulkan isu ini, gantikan alias dalam klausa HAVING dengan ungkapan agregat sebenar, seperti ditunjukkan di bawah:
select col1,count(col2) from --some join operation group by col1 having count(col2) >= 3
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Alias dalam Klausa HAVING SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!