Подтвердить что ты не робот

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

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

Select...
WHERE MyId  IN MyTempTable

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

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

4b9b3361

Ответ 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)