MySQL: Menyelesaikan masalah Ralat "Lajur Tidak Diketahui" dalam Keadaan CONCAT
Dalam MySQL, fungsi CONCAT membolehkan anda menggabungkan berbilang nilai ke dalam ungkapan tunggal. Walau bagaimanapun, pengguna mungkin menghadapi ralat "lajur tidak diketahui" apabila cuba menggunakan fungsi sebagai syarat dalam klausa WHERE.
Memahami Isu
Ralat berlaku kerana alias yang diberikan kepada nilai bercantum (cth., firstlast) tidak diiktiraf sebagai lajur yang sah dalam pertanyaan. Ini disebabkan oleh fakta bahawa alias hanya digunakan pada output pertanyaan dan tidak tersedia dalam pertanyaan itu sendiri.
Penyelesaian
Untuk menyelesaikan isu ini, terdapat dua pendekatan yang mungkin:
1. Mengulangi Ungkapan:
Salah satu cara untuk mengelakkan ralat adalah dengan mengulangi ungkapan CONCAT dalam klausa WHERE:
SELECT neededfield, CONCAT(firstname, ' ', lastname) AS firstlast FROM users WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones";
Kaedah ini memastikan bahawa nilai gabungan dibandingkan dengan betul terhadap input yang dikehendaki.
2. Membungkus Pertanyaan:
Sebagai alternatif, anda boleh membungkus pertanyaan asal dalam subkueri dan mencipta alias untuk nilai yang digabungkan dalam pertanyaan dalam:
SELECT * FROM ( SELECT neededfield, CONCAT(firstname, ' ', lastname) AS firstlast FROM users ) AS base WHERE firstlast = "Bob Michael Jones";
Dalam kes ini, alias firstlast diperuntukkan kepada nilai bercantum dalam subkueri, membenarkan ia digunakan sebagai syarat dalam pertanyaan luar.
Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat 'Lajur Tidak Diketahui' Apabila Menggunakan CONCAT dalam Klausa WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!