Masukkan Semua Lajur ke dalam Jadual Sasaran Menggunakan INSERT INTO...SELECT
Anda menghadapi kesukaran menyalin data dari this_table ke this_table_archive menggunakan INSERT INTO pernyataan dengan pilihan kad bebas (*). Mari kita selesaikan masalah dan cari penyelesaian yang berkesan.
Ralat terletak pada penggunaan (*) untuk memilih semua lajur tanpa menyatakan nama lajur. Sintaks yang betul, seperti yang diperincikan dalam manual MySQL, memerlukan anda menyenaraikan nama lajur secara eksplisit.
Berikut ialah kod yang betul:
INSERT INTO this_table_archive (col1, col2, ..., coln) SELECT col1, col2, ..., coln FROM this_table WHERE entry_date < '2011-01-01 00:00:00';
Ganti col1, col2, ..., coln dengan nama lajur sebenar dalam jadual anda.
Mengenai lajur id, jika kedua-dua jadual mempunyai id kenaikan automatik dan data sudah wujud dalam mana-mana jadual, anda boleh mempertimbangkan untuk meninggalkan id daripada senarai lajur dalam pertanyaan anda untuk mengelakkan kemungkinan konflik kunci pendua.
Untuk jadual sasaran kosong, peninggalan ini tidak akan menyebabkan sebarang isu. Walau bagaimanapun, untuk jadual dengan data, mengecualikan lajur id akan memastikan ID unik baharu dijana untuk baris yang disalin.
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Semua Lajur dengan Betul dari Satu Jadual ke Jadual Lain dalam MySQL Menggunakan INSERT INTO...SELECT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!