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?


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

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.


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


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


11
CREATE TABLE newTable LIKE oldTable;

Kemudian, untuk menyalin data

INSERT INTO newTable SELECT * FROM oldTable;



2
INSERT INTO Table1(Column1,Column2..) SELECT Column1,Column2.. FROM Table2 [WHERE <condition>]

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

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

0

Anda harus membuat table2 terlebih dahulu.

masukkan ke table2 (field1, field2, ...)
pilih field1, field2, ....
dari table1
dimana kondisinya;

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;

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.