ورود

View Full Version : INSERT کردن رکورد از یک جدول به جدول دیگر به همراه چند فیلد دیگر



masoode
پنج شنبه 22 فروردین 1398, 11:19 صبح
فرض کنید جدول Table1 را با سه فیلد زیر داریم:
ID int
Data1 int
Data2 int
و جدول Table2 با چهار فیلد:
ID int
Data1 int
Data2 int
DT datetime
حال می خواهم یک رکورد با آی دی مشخص را از جدول Table1 در Table2 کپی کنم و فیلد DT هم تاریخ عملیات باشد. این دستور را نوشته ام اما می دانم مشکل دارد لطفا کوئری من را اصلاح کنید:
INSERT INTO Table2 (ID,Data1,Data2,DT)
VALUES ((SELECT TOP(1)* FROM Table1 WHERE ID=101),SYSDATETIME())

البته می دانم که کد زیر کارم انجام می شود اما این یک جدول آزمایشی است، جدول اصلی حدود 50 فیلد دارد که عملا این کوئری مسخره ای خواهد بود:
INSERT INTO Table2 (ID,Data1,Data2,DT)
VALUES ((SELECT TOP(1)ID FROM Table1 WHERE ID=101),(SELECT TOP(1)Data1 FROM Table1 WHERE ID=101),(SELECT TOP(1)Data2 FROM Table1 WHERE ID=101),SYSDATETIME())

Mahmoud.Afrad
پنج شنبه 22 فروردین 1398, 15:00 عصر
INSERT INTO Table2 (ID,Data1,Data2,DT)
VALUES (SELECT TOP(1) ID, Data1, Data2, SYSDATETIME() FROM Table1 WHERE ID=101)

masoode
شنبه 24 فروردین 1398, 08:41 صبح
INSERT INTO Table2 (ID,Data1,Data2,DT)
VALUES (SELECT TOP(1) ID, Data1, Data2, SYSDATETIME() FROM Table1 WHERE ID=101)
:تشویق::تشویق::تشویق:
وای من چقدر خنگ شدم!!:گیج::لبخند:
ممنون لطف کردید
البته VALUES را نمیخواهد.
به علت اینکه فیلدهای دو تا جدول من کاملا مشابه و به یک ترتیب است و فقط چند تا فیلد به آخر آن اضافه شده است کوئری نهایی ام به این شکل شد و مشکلم حل شد:
INSERT INTO Table2
SELECT TOP(1)*,SYSDATETIME() FROM Table1 WHERE ID=101