SQL INSERT INTO SELECT Statement

در SQL از دستور INSERT INTO … SELECT برای کپی کردن داده‌ها از یک جدول به جدول دیگر که از قبل ساخته شده استفاده می‌کنیم.
برخلاف SELECT INTO، اینجا جدول مقصد از قبل وجود داره و داده‌ها بهش اضافه میشن.

🔹 ساختار کلی

INSERT INTO target_table (column1, column2, ...) SELECT column1, column2, ... FROM source_table WHERE condition;
  • target_table → جدول مقصد که داده‌ها در آن قرار می‌گیرن.

  • source_table → جدول اصلی که داده‌ها از آن انتخاب میشن.

  • WHERE → اختیاریه، برای محدود کردن رکوردها.

🔹 مثال ساده

جدول موجود: Customers_Backup

customer_idcustomer_name
1Ali
2Sara

جدول: Customers_New

customer_idcustomer_name
(خالی)

کوئری:

INSERT INTO Customers_New (customer_id, customer_name) SELECT customer_id, customer_name FROM Customers_Backup;

📌 توضیح: داده‌های جدول Customers_Backup به جدول Customers_New اضافه میشن.

🔹 مثال با شرط WHERE

INSERT INTO Customers_Iran (customer_id, customer_name, country) SELECT customer_id, customer_name, country FROM Customers WHERE country = 'Iran';

📌 فقط مشتری‌هایی که کشورشون 'Iran' هست به جدول مقصد اضافه میشن.

🔹 مثال با Join

INSERT INTO CustomerOrders (customer_id, customer_name, amount) SELECT c.customer_id, c.customer_name, o.amount FROM Customers c INNER JOIN Orders o ON c.customer_id = o.customer_id;

📌 اطلاعات مشتری‌ها و سفارش‌هاشون از دو جدول مختلف گرفته میشه و به جدول CustomerOrders اضافه میشه.

🔹 نکات مهم

  • جدول مقصد باید از قبل وجود داشته باشه.

  • تعداد و نوع ستون‌ها در SELECT باید با ستون‌های جدول مقصد سازگار باشه.

  • می‌تونیم از شرط WHERE برای انتخاب رکوردهای خاص استفاده کنیم.

  • در مقایسه با SELECT INTO، INSERT INTO … SELECT برای افزودن داده‌ها به جدول موجود کاربرد داره، نه ایجاد جدول جدید.