Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Saya INSERT ... PILIH Kenyataan Keputusan dalam 'Operand Harus Mengandungi 1 Lajur'?

Mengapa MySQL Saya INSERT ... PILIH Kenyataan Keputusan dalam 'Operand Harus Mengandungi 1 Lajur'?

DDD
DDDasal
2024-12-04 13:42:12935semak imbas

Why Does My MySQL INSERT ... SELECT Statement Result in

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!

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