Salin data ke tabel lain

154

Bagaimana cara menyalin / menambahkan data dari satu tabel ke tabel lain dengan skema yang sama di SQL Server?

Edit:

katakanlah ada permintaan

select * 
into table1 
from table2 
where 1=1 

yang dibuat table1dengan skema yang sama serta data seperti pada table2.

Apakah ada pertanyaan pendek seperti ini untuk hanya menyalin seluruh data hanya ke tabel yang sudah ada?

Rajaram Shelar
sumber
Hanya untuk informasi lengkap, hati-hati perintah ini JANGAN menyalin indeks dan pemicu tabel! Lihat posting berikut untuk copy indeks dan skrip pemicu: stackoverflow.com/questions/7582852/…
HausO
Bagaimana cara mengatasinya? INSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');

Jawaban:

310

Jika kedua tabel benar-benar skema yang sama:

INSERT INTO newTable
SELECT * FROM oldTable

Jika tidak, Anda harus menentukan nama kolom (daftar kolom newTableadalah opsional jika Anda menentukan nilai untuk semua kolom dan memilih kolom dalam urutan yang sama seperti newTableskema):

INSERT INTO newTable (col1, col2, col3)
SELECT column1, column2, column3
FROM oldTable
lc.
sumber
1
bagaimana jika saya ingin memasukkan blank databeberapa kolom ??
hud
3
@coder itu hanya klausa pilih, jadi Anda dipersilakan untuk memasukkan apa pun di dalamnya yang Anda inginkan, termasuk NULLs eksplisit , konstanta string, ekspresi, atau bahkan subqueries.
lc.
mengapa ini tidak berhasilINSERT INTO newTable (col1, col2, col3,col4) values ((SELECT column1, column2, column3 FROM oldTable where condition),'string');
1
@AbdullahNurum Karena permintaan skalar Anda memilih lebih dari satu kolom. Lihat stackoverflow.com/questions/4141370/… dan stackoverflow.com/questions/6254913/…
lc.
1
Jika kedua tabel menyajikan skema yang sama, tetapi ada kolom dengan 'Spesifikasi Identitas' pada YA, pernyataan SQL perlu menyebutkan semua kolom, kecuali yang dengan Spesifikasi Identitas.
Gabriel Marius Popescu
18

Ini adalah cara yang tepat untuk melakukannya:

INSERT INTO destinationTable
SELECT * FROM sourceTable
Zzz
sumber
16

Cara sederhana jika tabel baru tidak ada dan Anda ingin membuat salinan tabel lama dengan semuanya kemudian bekerja di SQL Server.

SELECT * INTO NewTable FROM OldTable
Satish Patel
sumber
11
INSERT INTO table1 (col1, col2, col3)
SELECT column1, column2, column3
FROM table2                                        
pengguna3566871
sumber
9

Coba ini:

INSERT INTO MyTable1 (Col1, Col2, Col4)
   SELECT Col1, Col2, Col3 FROM MyTable2
Abe Miessler
sumber
6

Coba ini:

Insert Into table2
Select * from table1
Kapil Khandelwal
sumber
4
INSERT INTO DestinationTable(SupplierName, Country)
SELECT SupplierName, Country FROM SourceTable;

Itu bukan nama kolom wajib untuk sama.

S.Adikaram
sumber
3

Masukkan kolom yang dipilih dengan kondisi

INSERT INTO where_to_insert (col_1,col_2) SELECT col1, col2 FROM from_table WHERE condition;

Salin semua data dari satu tabel ke tabel lainnya dengan nama kolom yang sama.

INSERT INTO where_to_insert 
SELECT * FROM from_table WHERE condition;
Nimmi Verma
sumber
0
CREATE TABLE `table2` LIKE `table1`;
INSERT INTO `table2` SELECT * FROM `table1`;

kueri pertama akan membuat struktur dari table1ke table2dan kueri kedua akan menempatkan data dari table1ketable2

Renish Gotecha
sumber