Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用@local_变量表从表中选择项目_Sql_Sql Server_Sql Server 2005_Tsql - Fatal编程技术网

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有多个列,这也会起作用??