Mengapa MySQL Melemparkan Ralat 'Lajur Tidak Diketahui' Apabila Menggunakan CONCAT dalam Klausa WHERE?

Barbara Streisand
Lepaskan: 2024-11-12 14:53:02
asal
737 orang telah melayarinya

Why Does MySQL Throw an

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";
Salin selepas log masuk

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";
Salin selepas log masuk

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!

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