使用SELECT INTO多行

时间:2011-04-06 12:20:51

标签: sql insert

这是重新 我想使用SELECT INTO使用查询结果创建一个表。 语法

SELECT *
INTO Persons_Backup
FROM Persons

非常接近我想要实现的目标,不同之处在于我希望FROM使用查询作为源。

我的情况比这些简单的例子复杂一点。

我需要创建一个表并同时插入多行。如果我可以(我不能)使用以前创建的表,那么语句将如下所示:

INSERT INTO Person_Backup12 (Col1, Col2, Col3)
Select 1, 'a','2001-01-01 12:00'
UNION ALL
Select 83, 'z','2011-09-30 13:27'
UNION ALL
Select 777, 'k','1997-04-25 09:27'

我可以在同时创建表格时这样做吗?

3 个答案:

答案 0 :(得分:4)

您可以将查询放入公共表表达式或派生表中,然后SELECT ... INTO。{/ p>

;WITH cte (Col1, Col2, Col3) AS
(
Select 1, 'a','2001-01-01 12:00'
UNION ALL
Select 83, 'z','2011-09-30 13:27'
UNION ALL
Select 777, 'k','1997-04-25 09:27'
)
SELECT *
INTO NewTable
FROM cte

在这种情况下,您可能需要一些显式强制类型转换来获取所需的列数据类型(datetime而不是char等。)

答案 1 :(得分:3)

不需要CTE

Select 1 as 'Col1', 'a' as 'Col2','2001-01-01 12:00' as 'Col3'
INTO Person_Backup12
UNION ALL
Select 83, 'z','2011-09-30 13:27'
UNION ALL
Select 777, 'k','1997-04-25 09:27'

2008年r2为我工作得很好。

答案 2 :(得分:2)

有可能,是的:

SELECT *
INTO Persons_Backup
FROM 
(
    Select 1 AS Col1, 'a' AS Col2,'2001-01-01 12:00' AS Col3
    UNION ALL
    Select 83 AS Col1, 'z' AS Col2,'2011-09-30 13:27' AS Col3
    UNION ALL
    Select 777 AS Col1, 'k' AS Col2,'1997-04-25 09:27' AS Col3
) AS SomeQuery
相关问题