Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Menggunakan Alias dalam SQL GROUP BY Klausa?
SQL GROUP BY
Klausa: Mengapa Alias Tidak Sentiasa Berfungsi
Alias SQL meningkatkan kebolehbacaan, tetapi penggunaannya dalam klausa GROUP BY
adalah terhad. Mari kita periksa batasan ini. Pertimbangkan pertanyaan ini:
<code class="language-sql">SELECT itemName as ItemName, substring(itemName, 1,1) as FirstLetter, Count(itemName) FROM table1 GROUP BY itemName, FirstLetter</code>
Pertanyaan ini cuba mengumpulkan dengan alias FirstLetter
. Walau bagaimanapun, SQL standard memerlukan pengelompokan lajur dinamakan kerana ia muncul dalam klausa FROM
. Sintaks yang betul ialah:
<code class="language-sql">GROUP BY itemName, substring(itemName, 1,1)</code>
Sekatan ini berpunca daripada perintah pelaksanaan SQL:
FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
Klausa GROUP BY
diproses sebelum klausa SELECT
di mana alias ditakrifkan. Oleh itu, FirstLetter
belum lagi wujud apabila GROUP BY
dinilai.
Peraturan ini memastikan ketekalan pertanyaan dan mengelakkan kekaburan. Walaupun menggunakan nama lajur asal dalam GROUP BY
mungkin kelihatan berlebihan apabila alias wujud dalam SELECT
, ia menjamin pengumpulan yang tepat.
Variasi Khusus Pangkalan Data
Sesetengah sistem pangkalan data, seperti MySQL dan PostgreSQL, menawarkan pengecualian. Pengoptimum pertanyaan lanjutan mereka boleh mengendalikan alias dalam klausa GROUP BY
. Walau bagaimanapun, bergantung pada tingkah laku ini tidak disyorkan untuk mudah alih merentas pangkalan data. Berpegang kepada SQL standard memastikan pertanyaan anda berfungsi secara konsisten merentas sistem pangkalan data yang berbeza.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Alias dalam SQL GROUP BY Klausa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!