Rumah > pangkalan data > tutorial mysql > MySQL INSERT ... SELECT Ralat: Mengapa 'Operand Harus Mengandungi 1 Lajur'?

MySQL INSERT ... SELECT Ralat: Mengapa 'Operand Harus Mengandungi 1 Lajur'?

Susan Sarandon
Lepaskan: 2024-12-11 10:21:15
asal
438 orang telah melayarinya

MySQL INSERT ... SELECT Error: Why

MySQL: Memahami Ralat Sintaks "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;
Salin selepas log masuk

Mesej ralat yang anda terima ialah:

Error: Operand should contain 1 column(s)
SQLState:  21000
ErrorCode: 1241
Salin selepas log masuk

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

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:

  • Pastikan terdapat tiada syarat sambung silang dalam klausa WHERE, yang boleh membawa kepada baris yang berlebihan gabungan.
  • Semak saiz data dalam kedua-dua jadual BUKU dan temp_cheques. Set data yang besar mungkin memerlukan peningkatan pembolehubah sistem SQL_BIG_SELECTS untuk membolehkan pertanyaan yang lebih besar.

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!

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