Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Menggunakan Alias Lajur dalam SQL GROUP BY Klausa?
SQL GROUP MENGIKUT Klausa dan Alias Penggunaan: Memahami Had
Pemprosesan pertanyaan SQL mengikut susunan tertentu, memberi kesan kepada cara alias berkelakuan dalam fasal GROUP BY
. Artikel ini menjelaskan tingkah laku ini dan sebab asasnya.
Mari kita periksa isu pertanyaan biasa:
<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 cacat kerana FirstLetter
, alias yang ditakrifkan dalam klausa SELECT
, digunakan dalam klausa GROUP BY
. Pendekatan yang betul ialah menggunakan ungkapan sebenar substring(itemName, 1,1)
dalam klausa GROUP BY
.
Sebab sekatan ini berpunca daripada susunan pemprosesan SQL standard:
FROM
WHERE
GROUP BY
HAVING
SELECT
ORDER BY
Oleh kerana klausa GROUP BY
dilaksanakan sebelum klausa SELECT
, alias FirstLetter
belum lagi wujud apabila klausa GROUP BY
diproses. Pangkalan data seperti Oracle dan SQL Server mematuhi perintah ini dengan ketat, menghalang penggunaan alias daripada klausa SELECT
dalam GROUP BY
.
Walau bagaimanapun, pangkalan data tertentu seperti MySQL dan PostgreSQL menawarkan sambungan yang membenarkan penggunaan alias dalam GROUP BY
. Tingkah laku bukan standard ini tidak konsisten secara universal, menjadikannya penting untuk mengesahkan keserasian dengan sistem pangkalan data khusus anda. Untuk SQL mudah alih yang boleh dipercayai, sentiasa gunakan ungkapan asas dalam klausa GROUP BY
dan bukannya bergantung pada alias.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Alias Lajur dalam SQL GROUP BY Klausa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!