Rumah > Artikel > pangkalan data > Mengapa MySQL Melemparkan Ralat "Lajur Tidak Diketahui" Apabila Menggunakan CONCAT dalam Pertanyaan PILIH?
Memahami Syarat CONCAT dalam MySQL SELECT Queries
Apabila berurusan dengan medan yang mewakili nama atau maklumat lain yang digabungkan, fungsi CONCAT MySQL menyediakan alat serba boleh untuk menggabungkan nilai dan melakukan perbandingan. Walau bagaimanapun, menggunakan CONCAT dalam pertanyaan SELECT boleh membawa kepada ralat "lajur tidak diketahui" untuk alias yang diperuntukkan kepada ungkapan bercantum.
Untuk mengatasi ralat ini, adalah penting untuk memahami bahawa alias dalam pertanyaan SELECT hanya terpakai kepada lajur keluaran dan tidak dikenali dalam pertanyaan itu sendiri. Oleh itu, untuk menggunakan ungkapan CONCAT dalam keadaan WHERE, anda mempunyai dua pilihan:
Ulang Ungkapan CONCAT:
Daripada menggunakan alias, ulangi ungkapan CONCAT dalam klausa WHERE:
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast FROM users WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"
Balut Pertanyaan:
Sebagai alternatif, anda boleh membungkus pertanyaan asal ke dalam subkueri dan tetapkan alias kepada ungkapan CONCAT dalam subkueri:
SELECT * FROM ( SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast FROM users) base WHERE firstLast = "Bob Michael Jones"
Dalam kedua-dua kes, pertanyaan berjaya membandingkan nilai gabungan medan nama pertama dan nama keluarga dengan yang disediakan rentetan, "Bob Michael Jones," dan mendapatkan semula hasil yang diingini.
Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat "Lajur Tidak Diketahui" Apabila Menggunakan CONCAT dalam Pertanyaan PILIH?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!