我需要根據select
的結果創建一組insert
語句。使用WHERE導出SELECT作爲INSERT
我發現在如此相似的問題,但據我所看到的,他們都考慮做一個全導出表的,但我需要運行與where
條件特定查詢,說
select * from T where open_time > '2013-11-01 00:00:00'
UPD:我需要一個腳本作爲輸出,因爲以後我會將這些行插入到單獨的數據庫中。
我需要根據select
的結果創建一組insert
語句。使用WHERE導出SELECT作爲INSERT
我發現在如此相似的問題,但據我所看到的,他們都考慮做一個全導出表的,但我需要運行與where
條件特定查詢,說
select * from T where open_time > '2013-11-01 00:00:00'
UPD:我需要一個腳本作爲輸出,因爲以後我會將這些行插入到單獨的數據庫中。
INSERT INTO Destination_Table (Column1, Column2, Column3, .....)
SELECT Column1, Column2, Column3, ..
FROM TABLE_Name --<-- Source Table Name
WHERE Condition... --<--- any conditions or Filters here
列和數據類型的INSERT
和SELECT
聲明的數應與
如果犯規存在,您可以動態創建一個表做這個
目標表上創建一個表飛
SELECT Column1, Column2, Column3, .. INTO New_Table_Name
FROM TABLE_Name --<-- Source Table Name
WHERE Condition... --<--- any conditions or Filters here
* 警告* 如果由名稱New_Table_Name表已經存在,那麼你將不得不使用INSERT INTO
方法,因爲使用SELECT INTO
語法將拋出一個錯誤,在這種情況下
選擇進入可以幫助你
SELECT LastName, FirstName, Phone
INTO dbo.PhoneList492
FROM Person.Contact
WHERE Phone LIKE '492%'
您可以使用動態SQL:
declare @sql nvarchar(max) = ''
select @sql = @sql + 'insert into table1(column1, column2) values ('
+ T.column1 + ',' + T.column2 + '); '
from T where open_time > '2013-11-01 00:00:00'
print (@sql)
這將生成insert語句,你可以複製並在以後使用。
根據數據類型的不同,您可能需要對其進行修改,您可能需要爲從T
返回的列引用和格式化數據類型。
您可以使用表格的列替換列名稱。
INSERT INTO NEW_T (Column1, Column2, Column2, ...)
SELECT Column1, Column2, Column3, ...
FROM T
WHERE open_time > '2013-11-01 00:00:00'
我假設你已經創建了新表NEW_T。
新表或現有表? –
@mr_eclair請參閱UPD – xaxa