目前,我以简单的形式在代码中声明了以下表:
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
关于如何解决这个问题的任何想法?
答案 0 :(得分:3)
你可以做任何一次
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
在第二个中,您需要为表变量分配别名。
答案 1 :(得分:1)
这样做
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
答案 2 :(得分:1)
这将有效:
select * from Files
where id in (select ID from @FileIDs)
您所做的第一次尝试需要在子查询中使用列名。