23

我有一个临时表,并且想检查一个 where 子句是否某个 id/字符串包含在临时表中。

Select...
WHERE MyId  IN MyTempTable

我在 MS SQL 管理工作室中遇到一般错误。

“In”运算符不适合临时表吗?

4

3 回答 3

31

您的语法错误:

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

我不太喜欢 IN 运算符,所以我更喜欢这个:

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

但这主要是口味问题。

于 2010-12-06T15:30:59.727 回答
5

您的语法略有错误。你需要做:

SELECT ...
  FROM ...
 WHERE MyId IN (SELECT MyId 
                  FROM MyTempTable);
于 2010-12-06T15:31:43.247 回答
0

in需要一个特定项目的列表。表一般有多个字段,怎么知道你指的是哪个字段?

您可以使用子查询,where field in (select whatever from #temp)

于 2010-12-06T15:31:45.093 回答