Как выбрать элементы из таблицы с помощью таблицы @local_variable - PullRequest
1 голос
/ 30 сентября 2010

В настоящее время в простой форме у меня есть следующая объявленная таблица в коде:

declare @FileIDs as table
(
    ID int not null
)

, и я могу заполнить ее, например, вручную следующим образом:

insert into
    @FileIDs
values
    (1)

insert into
    @FileIDs
values
    (2)

insert into
    @FileIDs
values
    (3)

Также у меня есть другаятаблица называется Files, и мне нравится выбирать только те элементы, которые имеют одинаковые идентификаторы.

Итак, я попробовал следующие подходы, но оба провалились:

select
    *
from
    Files
where
    ID in
    (
        @FileIDs
    )

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

Любые идеио том, как я могу решить эту проблему?

Ответы [ 3 ]

3 голосов
/ 30 сентября 2010

Вы можете сделать либо

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 голос
/ 30 сентября 2010

Это будет работать:

select * from Files 
where id in (select ID from @FileIDs)

Первая попытка, которую вы предприняли, должна была иметь имя столбца в подзапросе.

1 голос
/ 30 сентября 2010

сделай так

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...