[英]SQL Server, Problem creating temp table in TSQL
嗨,当我执行以下 TSQL 时,我收到以下错误消息。 但是 SQL 语法没有错吗?
create table #tb ([t1] tinyint, [t2] varchar(50))
insert into #tb values
(1, 'a'),
(2, 'b')
消息 102,级别 15,State 1,第 3 行“,”附近的语法不正确。
SQL 查询 window 中没有其他内容。 运行 SQL 服务器 2005。
正如 jmoreno 所提到的, VALUES (), ()
语法是 SQL Server 2008+ 支持,但您将其标记为 SQL Server 2005。
利用:
CREATE TABLE #tb ([t1] tinyint, [t2] varchar(50))
INSERT INTO #tb
SELECT 1, 'a'
UNION ALL
SELECT 2, 'b'
也可以在单个查询中执行此操作,使用SELECT... INTO
子句,但临时表不能已经存在:
SELECT *
INTO #tb
FROM (SELECT CAST(1 AS TINYINT) AS t1,
CAST('a' AS VARCHAR(50)) AS t2
UNION ALL
SELECT 2, 'b') x
尝试这个:
create table #tb ([t1] tinyint, [t2] varchar(50));
insert into #tb ([t1], [t2])
values(1, 'a'), (2, 'b')
您需要指定要插入的列。
//编辑
对不起,SQL 2005 语法如下。 它几乎没有那么优雅。
CREATE TABLE #tb ([t1] TINYINT, [t2] VARCHAR(50));
INSERT INTO #tb
SELECT 1, 'a'
UNION ALL
SELECT 2, 'b'
您说您使用的是 SQL 2005,但 VALUES (), () 语法直到 2008 年才实现。
看起来您正在尝试插入两行,因此您需要先插入第一行,然后再插入第二行,而不是尝试将其全部压缩为一个:
CREATE TABLE #tb ([t1] TINYINT, [t2] VARCHAR(50));
INSERT INTO #tb([t1],[t2]) VALUES (1, 'a'); --row 1
INSERT INTO #tb([t1],[t2]) VALUES (2, 'b'); --row 2
--see if it worked
SELECT [t1], [t2]
FROM #tb
--clean up the temp table when you're done
DROP TABLE #tb
SELECT t.field1, t.field2 INTO #myTempTable
FROM myDB.myOwner.myTable t
在哪里...
按 t.field1、t.field2 排序;
-- 如果您希望您的表是 GLOBAL,请使用 ##myTempTable 作为名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.