SQL临时表变量

obj*_*ass 43 t-sql sql-server

我想要实现:

declare @TEMP table (ID int, Name varchar(max))
insert into @temp SELECT ID, Name FROM Table

SELECT * FROM @TEMP 
WHERE @TEMP.ID  = 1        <--- ERROR AT @TEMP.ID
Run Code Online (Sandbox Code Playgroud)

但是出现了错误

必须声明标量变量"@temp".

任何帮助?

Gor*_*off 51

表别名不能以a开头@.所以,给@Temp另一个别名(或完全省略两部分命名):

SELECT *
FROM @TEMP t
WHERE t.ID = 1;
Run Code Online (Sandbox Code Playgroud)

此外,传统上在SQL中使用单个等号来进行比较.


Gia*_*los 16

在表格中使用Allias并使用T.ID,或仅使用列名称.

declare @TEMP table (ID int, Name varchar(max))
insert into @temp SELECT ID, Name FROM Table

SELECT * FROM @TEMP 
WHERE ID  = 1 
Run Code Online (Sandbox Code Playgroud)


小智 11

还有一种临时表的方法

create table #TempTable (
ID int,
name varchar(max)
)

insert into #TempTable (ID,name)
Select ID,Name 
from Table

SELECT * 
FROM #TempTable
WHERE ID  = 1 
Run Code Online (Sandbox Code Playgroud)

确定您正在选择正确的数据库.


pap*_*zzo 8

如果您将@括起来,可以直接使用它

declare @TEMP table (ID int, Name varchar(max))
insert into @temp values (1,'one'), (2,'two')

SELECT * FROM @TEMP 
WHERE [@TEMP].[ID] = 1
Run Code Online (Sandbox Code Playgroud)