T-SQL: где xxx IN временная таблица - PullRequest
15 голосов
/ 06 декабря 2010

У меня есть временная таблица, и я хочу проверить, в каком предложении where определенная id / строка содержится во временной таблице.

Select...
WHERE MyId  IN MyTempTable

Я получаю общую ошибку в MS SQL Management studio.

не подходит ли оператор "In" для временных таблиц?

Ответы [ 3 ]

24 голосов
/ 06 декабря 2010

Ваш синтаксис неправильный:

SELECT ...
  FROM MyTable
 WHERE MyID IN (SELECT MyID
                  FROM MyTempTable)

Мне не очень нравится оператор IN, поэтому я предпочитаю:

SELECT ...
  FROM MyTable
 WHERE EXISTS (SELECT *
                 FROM MyTempTable
                WHERE MyTable.MyID = MyID)

Но это в значительной степени вопрос вкуса.

3 голосов
/ 06 декабря 2010

Ваш синтаксис немного неправильный.Вам нужно сделать:

SELECT ...
  FROM ...
 WHERE MyId IN (SELECT MyId 
                  FROM MyTempTable);
0 голосов
/ 06 декабря 2010

in требуется список определенных предметов.Таблицы обычно имеют более одного поля, как узнать, какое поле вы имеете в виду?

Вы можете использовать подзапрос, where field in (select whatever from #temp)

...