2011-09-20 44 views
99

Tôi muốn sao chép dữ liệu từ bảng này sang bảng khác trong MySQL.Làm thế nào để sao chép dữ liệu từ một bảng sang một bảng mới khác trong MySQL?

Bảng 1 (bảng hiện tại):

aid  
st_id 
from_uid 
to_gid 
to_uid 
created 
changed 
subject 
message 
link 

Bảng 2 (New Table)

st_id 
uid 
changed 
status 
assign_status 

Tôi muốn sao chép một số lĩnh vực dữ liệu từ BẢNG 1 thành BẢNG 2.

Điều này có thể được thực hiện bằng cách sử dụng các truy vấn MySQL?

+1

Đây có phải là công việc một lần hoặc bạn định thực hiện thường xuyên không? – jdias

+0

@@ jdias: cho đến bây giờ là một công việc một lần .. – Fero

+0

@jdias Để làm rõ, nếu nó không phải là một công việc một lần, những gì một Noob MySQL nên làm thay vào đó? – Seanny123

Trả lời

187

này sẽ làm những gì bạn muốn:

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

Nếu bạn muốn bao gồm tất cả các hàng từ table1. Nếu không, bạn có thể thêm câu lệnh WHERE vào cuối nếu bạn chỉ muốn thêm một tập hợp con của bảng 1.

Tôi hy vọng điều này sẽ hữu ích.

+0

không hoạt động ... – SANDEEP

+0

Tuyệt vời, vui mừng khi thấy điều này giống như những gì tôi đã từng sử dụng trong T-SQL. – jpierson

+0

Một lý do nữa để yêu MySQL, rất trực quan! – peceps

2
SELECT * 
INTO newtable [IN externaldb] 
FROM table1; 

http://www.w3schools.com/sql/sql_select_into.asp

+0

Không hoạt động. Mỗi [tài liệu] (http://dev.mysql.com/doc/refman/5.0/en/ansi-diff-select-into-table.html), "Máy chủ MySQL không hỗ trợ SELECT ... INTO TABLE Phần mở rộng Sybase SQL " – Bryan

18

Bạn có thể dễ dàng lấy dữ liệu từ một bảng khác. Bạn chỉ cần thêm các trường bạn muốn.

Các truy vấn mysql là:

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


nơi, các giá trị được sao chép từ table2 để Table1

49

Nếu bạn không muốn liệt kê các lĩnh vực, và cấu trúc của các bảng là tương tự, bạn có thể làm:

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

hoặc nếu bạn muốn tạo một bảng mới với cấu trúc giống nhau:

CREATE TABLE new_tbl [AS] SELECT * FROM orig_tbl; 

Reference for insert select; Reference for create table select

+1

tại sao '[AS]' là trong dấu ngoặc vuông, những gì được thực hiện bởi 'AS' ở đây –

+1

Nó biểu thị rằng từ là không bắt buộc. Nó được viết theo cách đó bởi vì tôi đã sao chép và dán từ các tài liệu; nó không thêm gì cả. Tôi nghĩ rằng 'AS' là bắt buộc trong các phương ngữ SQL khác. – Bryan

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

Trong khi mã này có thể trả lời câu hỏi, tốt hơn là giải thích cách giải quyết vấn đề và tại sao sử dụng nó. Câu trả lời chỉ có mã không hữu ích trong thời gian dài. –

0

các truy vấn trên chỉ hoạt động nếu chúng tôi đã tạo cho khách hàng bảng với phù hợp với cột của khách hàng

INSERT INTO clients(c_id,name,address)SELECT c_id,name,address FROM customer 
3
CREATE TABLE newTable LIKE oldTable; 

Sau đó, để sao chép dữ liệu qua

INSERT INTO newTable SELECT * FROM oldTable; 
0

Bạn có thể thử mã này

insert into #temp 
select Product_ID,Max(Grand_Total) AS 'Sales_Amt', Max(Rec_Amount) ,'','' 
from Table_Name group by Id 
Các vấn đề liên quan