一尘不染

对多行使用SELECT INTO

sql

这就是我想通过利用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'

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


阅读 270

收藏
2021-03-08

共1个答案

一尘不染

您可以将查询放入通用表表达式或派生表SELECT ... INTO中。

;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等)。

2021-03-08