SQL @list临时变量 ,报错信息必须定义变量

declare @list table
(
Id int,
Name navarchar(12)
)

insert into @list
select * from tableA

select * from @list --到这步都是OK的,能得到@list中的数据

--下面我想把@list与tableB表联接起来做查询
select * from @list,tableB
where @list.id = tableB.id

结果报错了,提示上面where语句中的@list有问题:Must declare the scalar variable "@list".

这是为什么呢?我不是已经都定义了吗?

@list 加个别名就可以了,我试过可以了

declare @list table
(
Id int,
Name navarchar(12)
)
insert into @list
select * from tableA
select * from @list --到这步都是OK的,能得到@list中的数据
--下面我想把@list与tableB表联接起来做查询
select * from @list A,tableB
where A.id = tableB.id

你的是什么 数据库?

@list是临时表变量,不是临时表,是放在内存中的。所以这么无法直接和物理表联表
改成

 select * from (select * from @list) a,tableB
where a.id = tableB.id

@list 加个别名就可以了,我试过可以了

declare @list table
(
Id int,
Name navarchar(12)
)
insert into @list
select * from tableA
select * from @list --到这步都是OK的,能得到@list中的数据
--下面我想把@list与tableB表联接起来做查询
select * from @list A,tableB
where A.id = tableB.id