Rumah > Soal Jawab > teks badan
P粉9856865572023-08-25 00:31:09
INSERT INTO db1.table SELECT * FROM db2.table;
Jika anda ingin menyalin data ke jadual yang sama dalam pangkalan data yang berbeza.
P粉6638838622023-08-25 00:15:21
Pertanyaan anda sepatutnya kelihatan seperti ini:
INSERT INTO newDatabase.table1 (Column1, Column2) SELECT column1, column2 FROM oldDatabase.table1;
Kemas kini
Memandangkan jawapan ini mendapat perhatian lebih daripada yang saya jangkakan, saya harus mengembangkan jawapan ini. Pertama, ia mungkin tidak jelas daripada jawapan itu sendiri, tetapi nama lajur tidak perlu sama. Jadi, perkara berikut juga akan berfungsi (dengan mengandaikan lajur wujud dalam jadual masing-masing):
INSERT INTO newDatabase.table1 (Column1, Column2) SELECT SomeOtherColumn, MoreColumns FROM oldDatabase.table1;
Selain itu, ia tidak perlu menjadi lajur sebenar dalam jadual. Satu contoh mengubah data yang sering saya gunakan ialah:
INSERT INTO newDatabase.users (name, city, email, username, added_by) SELECT CONCAT(first_name, ' ', last_name), 'Asgard', CONCAT(first_name,'@gmail.com'), CONCAT(first_name,last_name), 'Damir' FROM oldDatabase.old_users;
Jadi, mungkin peraturan yang lebih jelas sekarang ialah selagi pertanyaan SELECT mengembalikan bilangan lajur yang sama seperti yang diperlukan oleh pertanyaan INSERT, ia boleh digunakan sebagai ganti VALUES.