ฉันมีตารางที่เหมือนกันสองตารางและต้องการคัดลอกแถวจากตารางไปยังอีกตารางหนึ่ง วิธีที่ดีที่สุดคืออะไร? (ฉันต้องการคัดลอกโดยใช้โปรแกรมเพียงไม่กี่แถวฉันไม่จำเป็นต้องใช้ยูทิลิตี้สำเนาจำนวนมาก)
ฉันมีตารางที่เหมือนกันสองตารางและต้องการคัดลอกแถวจากตารางไปยังอีกตารางหนึ่ง วิธีที่ดีที่สุดคืออะไร? (ฉันต้องการคัดลอกโดยใช้โปรแกรมเพียงไม่กี่แถวฉันไม่จำเป็นต้องใช้ยูทิลิตี้สำเนาจำนวนมาก)
คำตอบ:
ตราบเท่าที่ไม่มีคอลัมน์ประจำตัวคุณสามารถทำได้
INSERT INTO TableNew
SELECT * FROM TableOld
WHERE [Conditions]
SET IDENTITY_INSERT < table > ON
(และSET IDENTITY_INSERT < table > OFF
) เพื่อปิดใช้งานคอลัมน์ข้อมูลประจำตัวชั่วคราวบนตารางที่คุณพยายามแทรกเข้าไป ทำงานให้ฉันพยายามกู้คืนระเบียนที่ขาดหายไปสองสามรายการในช่วงกลางของชุดข้อมูล
ไวยากรณ์ทางเลือก:
INSERT tbl (Col1, Col2, ..., ColN)
SELECT Col1, Col2, ..., ColN
FROM Tbl2
WHERE ...
แบบสอบถามแบบเลือกสามารถ (แน่นอน) รวมถึงนิพจน์ประโยคกรณีค่าคงที่ / ตัวอักษร ฯลฯ
คำตอบของ Jarrett สร้างตารางใหม่
คำตอบของ Scott แทรกลงในตารางที่มีอยู่ซึ่งมีโครงสร้างเดียวกัน
คุณยังสามารถแทรกลงในตารางที่มีโครงสร้างต่างกัน:
INSERT Table2
(columnX, columnY)
SELECT column1, column2 FROM Table1
WHERE [Conditions]
INSERT INTO DestTable
SELECT * FROM SourceTable
WHERE ...
ทำงานใน SQL Server
SELECT * INTO < new_table > FROM < existing_table > WHERE < clause >
SELECT * INTO [SQLTEST].[dbo].[EMPLOYEES] FROM [SQLPROD].[dbo].[EMPLOYEES]