如何使用@local_variable表从表中选择项目

时间:2010-09-30 12:57:47

标签: 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的项目。

所以我尝试了以下方法,但都失败了:

select
    *
from
    Files
where
    ID in
    (
        @FileIDs
    )

select
    *
from
    Files
    inner join @FileIDs
    on Files.ID = @FileIDs.ID

关于如何解决这个问题的任何想法?

3 个答案:

答案 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)

您所做的第一次尝试需要在子查询中使用列名。