Rumah > pangkalan data > tutorial mysql > Mengapa MySQL Melemparkan Ralat '#1054 - Lajur Tidak Diketahui' Apabila Menggunakan Alias ​​Lajur dalam Klausa WHERE?

Mengapa MySQL Melemparkan Ralat '#1054 - Lajur Tidak Diketahui' Apabila Menggunakan Alias ​​Lajur dalam Klausa WHERE?

Susan Sarandon
Lepaskan: 2025-01-22 08:27:09
asal
288 orang telah melayarinya

Why Does MySQL Throw a

MySQL WHERE Klausa dan Alias ​​Lajur: Menyelesaikan masalah Ralat "#1054 - lajur Tidak Diketahui"

Pertanyaan MySQL kadangkala menghasilkan ralat "#1054 - Lajur tidak diketahui 'guaranteed_postcode' dalam 'IN/ALL/ANY subquery'" apabila menggunakan alias lajur dalam klausa WHERE. Ini kerana SQL standard menghalang penggunaan alias dalam klausa WHERE disebabkan kemungkinan ketidakkonsistenan dalam penentuan nilai lajur semasa pelaksanaan. Pangkalan data belum lagi memberikan nilai kepada alias apabila klausa WHERE diproses.

Manual MySQL dengan jelas menyatakan bahawa alias hanya sah dalam klausa GROUP BY, ORDER BY, atau HAVING. Klausa ini beroperasi selepas pengambilan data, menjamin ketersediaan alias.

Pertanyaan anda mungkin menggunakan SUBSTRING(locations.raw,-6,4) alias sebagai guaranteed_postcode dalam klausa WHERE. Oleh kerana MySQL menemui alias sebelum nilai lajur dikira, ia menjana ralat.

Untuk membetulkannya, gunakan klausa HAVING (untuk fungsi atau pengiraan agregat) atau subkueri dalam klausa WHERE. Subkueri mengelak daripada menggunakan alias secara langsung dalam klausa WHERE pertanyaan utama, menyediakan penapisan yang diperlukan tanpa melanggar peraturan MySQL.

Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat '#1054 - Lajur Tidak Diketahui' Apabila Menggunakan Alias ​​Lajur dalam Klausa WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan