Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Saya INSERT ... PILIH Kenyataan Keputusan dalam 'Operand Harus Mengandungi 1 Lajur'?
Ralat MySQL: "Operand Harus Mengandungi 1 Lajur"
Apabila melaksanakan pernyataan INSERT menggunakan klausa SELECT dalam MySQL, anda mungkin menghadapi ralat "Operand harus mengandungi 1 lajur". Ralat ini berlaku apabila klausa SELECT mengembalikan lebih daripada satu lajur, melanggar format jangkaan pernyataan INSERT.
Untuk menangani isu ini, ikut sintaks yang betul untuk pernyataan INSERT dengan klausa SELECT:
INSERT INTO MyTable (PriKey, Description) SELECT ForeignKey, Description FROM SomeView
Dalam pertanyaan khusus anda, alih keluar kurungan daripada SELECT klausa:
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;
Selain itu, ralat "SELECT akan memeriksa lebih daripada MAX_JOIN_SIZE baris; semak WHERE anda dan gunakan SET SQL_BIG_SELECTS=1 atau SET SQL_MAX_JOIN_SIZE=# jika SELECT okey." menunjukkan bahawa pertanyaan rujukan silang boleh menghasilkan set hasil yang besar. Untuk membenarkan operasi, laksanakan pernyataan berikut sebelum menjalankan pertanyaan INSERT:
SET SQL_BIG_SELECTS = 1
Perhatikan bahawa ini mungkin masih menyebabkan masa pelaksanaan yang panjang.
Atas ialah kandungan terperinci Mengapa MySQL Saya INSERT ... PILIH Kenyataan Keputusan dalam 'Operand Harus Mengandungi 1 Lajur'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!