Sql 如何使用@local_变量表从表中选择项目
目前,我以简单的形式在代码中声明了以下表格:Sql 如何使用@local_变量表从表中选择项目,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,目前,我以简单的形式在代码中声明了以下表格: declare @FileIDs as table ( ID int not null ) 我可以像这样手动填充: insert into @FileIDs values (1) insert into @FileIDs values (2) insert into @FileIDs values (3) 另外,我还有另一个名为Files的表,我只想选择那些具有相同ID的项目 因此,我尝
declare @FileIDs as table
(
ID int not null
)
我可以像这样手动填充:
insert into
@FileIDs
values
(1)
insert into
@FileIDs
values
(2)
insert into
@FileIDs
values
(3)
另外,我还有另一个名为Files
的表,我只想选择那些具有相同ID的项目
因此,我尝试了以下方法,但都失败了:
select
*
from
Files
where
ID in
(
@FileIDs
)
select
*
from
Files
inner join @FileIDs
on Files.ID = @FileIDs.ID
有什么办法解决这个问题吗?你也可以
select
*
from
Files
where
ID in
(
SELECT ID FROM @FileIDs
)
select
f.*
from
Files f
inner join @FileIDs fid
on f.ID = fid.ID
在第一个查询中,您的语法不正确。你必须有
SELECT ID FROM @FileIDs
在第二步中,您需要为表变量指定一个别名。您可以执行以下任一操作
select
*
from
Files
where
ID in
(
SELECT ID FROM @FileIDs
)
select
f.*
from
Files f
inner join @FileIDs fid
on f.ID = fid.ID
在第一个查询中,您的语法不正确。你必须有
SELECT ID FROM @FileIDs
在第二步中,您需要为表变量指定一个别名。这样做
declare @FileIDs as table
(
ID int not null
)
insert into
@FileIDs
values
(1)
insert into
@FileIDs
values
(2)
insert into
@FileIDs
values
(3)
;
select
*
from
Files
inner join (select * from @FileIDs) F
on Files.ID = F.ID
像这样做
declare @FileIDs as table
(
ID int not null
)
insert into
@FileIDs
values
(1)
insert into
@FileIDs
values
(2)
insert into
@FileIDs
values
(3)
;
select
*
from
Files
inner join (select * from @FileIDs) F
on Files.ID = F.ID
这将有助于:
select * from Files
where id in (select ID from @FileIDs)
您的第一次尝试需要在子查询中有一个列名。这将起作用:
select * from Files
where id in (select ID from @FileIDs)
您的第一次尝试需要在子查询中有一个列名。您得到的错误是什么,文件的类型是什么。ID?只需给@FileId提供一个别名,此表是否需要删除才能重新插入?您得到的错误是什么,文件的类型是什么。ID?只需给@FileId提供一个别名,此表是否需要删除为了重新插入而删除?为什么
内部连接(从@FileIDs)F
而不是简单地内部连接@FileIDs F
?是的,你是对的。我没有编辑,因为答案已经被选择了为什么内部连接(从@FileIDs)F
而不是简单地内部连接@FileIDs F
?是的,你是对的。我没有编辑,因为已经选择了答案,即使@variable有多个列,这也会起作用,即使@variable有多个列,这也会起作用??