Tôi có hai bảng giống nhau và cần sao chép các hàng từ bảng này sang bảng khác. Cách tốt nhất để làm điều đó là gì? (Tôi chỉ cần sao chép theo chương trình một vài hàng, tôi không cần sử dụng tiện ích sao chép hàng loạt).
Câu trả lời:
Miễn là không có cột nhận dạng, bạn có thể
INSERT INTO TableNew
SELECT * FROM TableOld
WHERE [Conditions]
SET IDENTITY_INSERT < table > ON
(và SET IDENTITY_INSERT < table > OFF
) để tạm thời vô hiệu hóa cột nhận dạng trên bảng mà bạn đang cố gắng chèn vào. Đã làm việc cho tôi khi cố gắng khôi phục một vài bản ghi bị thiếu ở giữa tập dữ liệu.
Cú pháp thay thế:
INSERT tbl (Col1, Col2, ..., ColN)
SELECT Col1, Col2, ..., ColN
FROM Tbl2
WHERE ...
Truy vấn select có thể (tất nhiên) bao gồm các biểu thức, câu lệnh trường hợp, hằng số / chữ, v.v.
Câu trả lời của Jarrett tạo ra một bảng mới.
Câu trả lời của Scott chèn vào một bảng hiện có có cùng cấu trúc.
Bạn cũng có thể chèn vào một bảng có cấu trúc khác:
INSERT Table2
(columnX, columnY)
SELECT column1, column2 FROM Table1
WHERE [Conditions]
INSERT INTO DestTable
SELECT * FROM SourceTable
WHERE ...
hoạt động trong SQL Server
SELECT * INTO < new_table > FROM < existing_table > WHERE < clause >
SELECT * INTO [SQLTEST].[dbo].[EMPLOYEES] FROM [SQLPROD].[dbo].[EMPLOYEES]