Bagaimana cara menyalin data dari satu tabel ke tabel baru lainnya di MySQL?

143

Saya ingin menyalin data dari satu tabel ke tabel lainnya di MySQL.

Tabel 1 (Tabel yang ada):

aid    
st_id
from_uid
to_gid
to_uid
created
changed
subject
message
link

Tabel 2 (Tabel Baru)

st_id
uid
changed
status
assign_status

Saya ingin menyalin beberapa bidang data dari TABEL 1 ke dalam TABEL 2.

Bisakah ini dilakukan dengan menggunakan query MySQL?

Fero
sumber
1
Apakah ini pekerjaan satu kali atau Anda berencana untuk melakukannya secara teratur?
jdias
@@ jdias: sampai sekarang ini adalah pekerjaan satu kali ..
Fero
@ jdias Untuk memperjelas, jika ini bukan pekerjaan satu kali, apa yang harus dilakukan oleh MySQL noob?
Seanny123
1
Mungkin tampilan untuk menghindari duplikasi data.
James Bradbury
Kemungkinan duplikat Salin data ke tabel lain
Marcus Vinicius Melo

Jawaban:

280

Ini akan melakukan apa yang Anda inginkan:

INSERT INTO table2 (st_id,uid,changed,status,assign_status)
SELECT st_id,from_uid,now(),'Pending','Assigned'
FROM table1

Jika Anda ingin memasukkan semua baris dari table1. Kalau tidak, Anda dapat menambahkan pernyataan WHERE ke akhir jika Anda ingin menambahkan hanya sebagian dari table1.

Saya harap ini membantu.

jdias
sumber
Hebat, senang melihat ini sama dengan yang saya gunakan di T-SQL.
jpierson
1
Satu lagi alasan untuk mencintai MySQL, sangat intuitif!
peceps
Jika Anda ingin menyalin semua data table1 maka Anda harus membuat table2 baru sebelum menyalin @SANDEEP
Sachin dari Pune
77

Jika Anda tidak ingin membuat daftar bidang, dan struktur tabelnya sama, Anda dapat melakukannya:

INSERT INTO `table2` SELECT * FROM `table1`;

atau jika Anda ingin membuat tabel baru dengan struktur yang sama:

CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl;

Referensi untuk insert pilih ; Referensi untuk membuat tabel pilih

Bryan
sumber
2
mengapa [AS]dalam kurung siku, apa yang dilakukan ASdi sini
Kasun Siyambalapitiya
3
Ini menunjukkan bahwa kata tersebut opsional. Itu ditulis seperti itu karena saya menyalin dan menempel dari dokumen; itu tidak menambahkan apa pun. Saya pikir ASini wajib dalam dialek SQL lainnya.
Bryan
22

Anda dapat dengan mudah mendapatkan data dari tabel lain. Anda harus menambahkan hanya bidang yang Anda inginkan.

Permintaan mysql adalah:

INSERT INTO table_name1(fields you want)
  SELECT fields you want FROM table_name2


di mana, nilai-nilai disalin dari table2 ke table1

php
sumber
11
CREATE TABLE newTable LIKE oldTable;

Kemudian, untuk menyalin data

INSERT INTO newTable SELECT * FROM oldTable;
Seymur Asadov
sumber
2
INSERT INTO Table1(Column1,Column2..) SELECT Column1,Column2.. FROM Table2 [WHERE <condition>]
Nana Partykar
sumber
2
Meskipun kode ini dapat menjawab pertanyaan, akan lebih baik untuk menjelaskan bagaimana cara memecahkan masalah dan mengapa menggunakannya. Jawaban kode saja tidak berguna dalam jangka panjang.
Tobias Liefke
0

Anda dapat mencoba kode ini

insert into #temp 
select Product_ID,Max(Grand_Total) AS 'Sales_Amt', Max(Rec_Amount) ,'',''
from Table_Name group by Id
Biddut
sumber
0

kueri di atas hanya berfungsi jika kami telah membuat tabel klien dengan kolom yang sesuai dari pelanggan

INSERT INTO clients(c_id,name,address)SELECT c_id,name,address FROM customer
Qanuni
sumber
0

Anda harus membuat table2 terlebih dahulu.

masukkan ke table2 (field1, field2, ...)
pilih field1, field2, ....
dari table1
dimana kondisinya;
Sriyashree Swain
sumber
0

JIKA tabel ada. Anda dapat mencoba menyisipkan ke nama_tabel pilih * dari old_tale;

JIKA tabel tidak ada. Anda harus mencoba membuat table table_name seperti old_table; masukkan ke table_name pilih * dari old_tale;

Jac Tian
sumber