Rumah >pangkalan data >tutorial mysql >MySQL INSERT ... SELECT Ralat: Mengapa 'Operand Harus Mengandungi 1 Lajur'?
Pertanyaan dan Ralat
Apabila cuba untuk melaksanakan pernyataan INSERT menggunakan klausa SELECT, seperti yang ditunjukkan di bawah, anda menghadapi ralat:
INSERT INTO VOUCHER (VOUCHER_NUMBER, BOOK_ID, DENOMINATION) SELECT (a.number, b.ID, b.DENOMINATION) FROM temp_cheques a, BOOK b WHERE a.number BETWEEN b.START_NUMBER AND b.START_NUMBER+b.UNITS-1;
Mesej ralat yang anda terima ialah:
Error: Operand should contain 1 column(s) SQLState: 21000 ErrorCode: 1241
Pembetulan Sintaks
Ralat menunjukkan isu sintaks dengan SELECT klausa. Untuk menyelesaikan masalah ini, alih keluar kurungan daripada klausa SELECT dan tuliskannya seperti berikut:
INSERT INTO VOUCHER (VOUCHER_NUMBER, BOOK_ID, DENOMINATION) SELECT a.number, b.ID, b.DENOMINATION FROM temp_cheques a, BOOK b WHERE a.number BETWEEN b.START_NUMBER AND b.START_NUMBER+b.UNITS-1;
Penjelasan
Sintaks yang betul untuk pernyataan INSERT menggunakan klausa SELECT memerlukan klausa SELECT untuk mengembalikan satu lajur, bukan berbilang lajur yang disertakan kurungan.
Pertimbangan Tambahan
Jika anda terus menghadapi isu selepas membetulkan sintaks, pertimbangkan perkara berikut:
Atas ialah kandungan terperinci MySQL INSERT ... SELECT Ralat: Mengapa 'Operand Harus Mengandungi 1 Lajur'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!