Rumah  >  Artikel  >  pangkalan data  >  Mengapa MySQL Melemparkan Ralat "Lajur Tidak Diketahui" Apabila Menggunakan CONCAT dalam Pertanyaan PILIH?

Mengapa MySQL Melemparkan Ralat "Lajur Tidak Diketahui" Apabila Menggunakan CONCAT dalam Pertanyaan PILIH?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-17 17:49:02363semak imbas

Why Does MySQL Throw an

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:

  1. 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"
  2. 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!

Kenyataan:
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