Memahami MySQL "Operand should contain 1 column(s)" Ralat
MySQL's error message "Operand should contain 1 column(s)" menunjukkan ralat sintaks yang berkaitan dengan bilangan lajur yang dikembalikan oleh subkueri yang digunakan dalam SELECT pernyataan INSERT klausa.
Dalam kejadian khusus ini, apabila cuba memasukkan rekod ke dalam jadual BAUCAR menggunakan klausa SELECT yang menggabungkan dua jadual (temp_cheques dan BOOK), pengguna mengalami ralat ini. Pertanyaan sedang cuba untuk memasukkan berbilang lajur (nombor, ID dan DENOMINATION) daripada klausa SELECT ke dalam satu lajur (VOUCHER_NUMBER).
Membetulkan Sintaks
Kepada menyelesaikan ralat, pengguna perlu memastikan klausa SELECT mengembalikan hanya satu lajur, yang akan menjadi nilai lajur sasaran dalam INSERT kenyataan. Salah satu cara untuk mencapai ini adalah dengan mengalih keluar kurungan daripada klausa SELECT, mengikut sintaks yang betul yang diserlahkan dalam jawapan yang disediakan:
INSERT INTO VOUCHER (VOUCHER_NUMBER) SELECT a.number FROM temp_cheques a, BOOK b WHERE a.number BETWEEN b.START_NUMBER AND b.START_NUMBER+b.UNITS-1;
Pertimbangan Tambahan
Dalam selain membetulkan sintaks, adalah penting untuk mengambil perhatian amaran mengenai operasi rujukan silang yang mengakibatkan pertanyaan yang berpotensi besar jika kedua-dua BOOK dan temp_cheques mengandungi banyak baris. Untuk membenarkan pertanyaan dijalankan, mungkin perlu menetapkan SQL_BIG_SELECTS = 1 sebelum menjalankannya, seperti yang dinyatakan dalam jawapan.
Atas ialah kandungan terperinci Mengapa Pernyataan INSERT MySQL Saya Dapatkan Ralat 'Operand harus mengandungi 1 lajur'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!