这就是我想通过利用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'
我可以在同时创建表的同时这样做吗?
您可以将查询放入通用表表达式或派生表SELECT ... INTO中。
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等)。
datetime
char