我需要从insert
的结果中创建一组select
个语句。
我在SO上发现了类似的问题,但据我所知,他们都考虑对表进行完全导出,但我需要运行where
条件的特定查询,比如说
select * from T where open_time > '2013-11-01 00:00:00'
UPD :我需要将脚本作为输出,因为稍后我会将这些行插入到单独的数据库中。
答案 0 :(得分:1)
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
语法将引发错误
答案 1 :(得分:1)
您可以使用动态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)
这将生成您可以复制并稍后使用的插入语句。
您可能需要修改它,具体取决于您可能需要引号的数据类型以及从T
返回的列的格式。
答案 2 :(得分:0)
选择可以帮助你
SELECT LastName, FirstName, Phone
INTO dbo.PhoneList492
FROM Person.Contact
WHERE Phone LIKE '492%'
答案 3 :(得分:0)
您可以使用表格的列替换列名称。
INSERT INTO NEW_T (Column1, Column2, Column2, ...)
SELECT Column1, Column2, Column3, ...
FROM T
WHERE open_time > '2013-11-01 00:00:00'
我假设您已经创建了新表 NEW_T 。