T-SQL: где временная таблица xxx IN
У меня есть временная таблица и вы хотите проверить предложение where, если в таблице temp содержится определенная строка id/string.
Select...
WHERE MyId IN MyTempTable
Я получаю общую ошибку в студии MS SQL Management.
- это оператор "In", не подходящий для временных таблиц?
Ответы
Ответ 1
Ваш синтаксис неверен:
SELECT ...
FROM MyTable
WHERE MyID IN (SELECT MyID
FROM MyTempTable)
Мне не очень нравится оператор IN, поэтому я предпочитаю это:
SELECT ...
FROM MyTable
WHERE EXISTS (SELECT *
FROM MyTempTable
WHERE MyTable.MyID = MyID)
Но это во многом вопрос вкуса.
Ответ 2
Ваш синтаксис немного ошибочен. Вам нужно сделать:
SELECT ...
FROM ...
WHERE MyId IN (SELECT MyId
FROM MyTempTable);
Ответ 3
in
требуется список конкретных элементов. Таблицы обычно имеют более одного поля, как узнать, какое поле вы имеете в виду?
Вы можете использовать подзапрос, where field in (select whatever from #temp)