嗨,當我執行下面的TSQL時,我收到下面的錯誤消息。但是,SQL語法在那裏沒有錯?SQL Server,在TSQL中創建臨時表的問題
create table #tb ([t1] tinyint, [t2] varchar(50))
insert into #tb values
(1, 'a'),
(2, 'b')
消息102,級別15,狀態1,行3 附近有語法錯誤 ''。
SQL查詢窗口中沒有任何其他內容。運行SQL Server 2005
嗨,當我執行下面的TSQL時,我收到下面的錯誤消息。但是,SQL語法在那裏沒有錯?SQL Server,在TSQL中創建臨時表的問題
create table #tb ([t1] tinyint, [t2] varchar(50))
insert into #tb values
(1, 'a'),
(2, 'b')
消息102,級別15,狀態1,行3 附近有語法錯誤 ''。
SQL查詢窗口中沒有任何其他內容。運行SQL Server 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
clause,但臨時表不能已經存在:
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'
我得到了與上面完全相同的錯誤。 – Grant 2011-05-23 23:59:26
貌似你試圖插入兩行,所以你需要插入的第一行,然後第二個,而不是試圖把它全部擠進一個:
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牛逼
WHERE ...
ORDER BY t.field1,t.field2;
- 如果希望表格是GLOBAL,請使用## myTempTable作爲名稱。
OMG小馬我只需要upvote你的一年和一半的答案,因爲「x」。我認爲在FROM聲明結尾處必須是一個錯字,但它不是,它確實幫助我很多! – AZee 2012-12-05 05:45:09