T-SQL: где xxx IN временная таблица

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

Select...
WHERE MyId  IN MyTempTable

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

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

3 ответа

Решение

Ваш синтаксис неверен:

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

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

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

Но это во многом дело вкуса.

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

SELECT ...
  FROM ...
 WHERE MyId IN (SELECT MyId 
                  FROM MyTempTable);

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

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

Другие вопросы по тегам