T-SQL:其中xxx IN临时表

时间:2010-12-06 15:29:33

标签: sql-server where in-operator temp-tables

我有一个临时表,想要检查一个where子句,其中某个id / string包含在临时表中。

Select...
WHERE MyId  IN MyTempTable

我在MS SQL Management Studio中遇到一般错误。

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

3 个答案:

答案 0 :(得分:23)

您的语法错误:

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

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

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

但这主要是品味问题。

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

in需要特定项目列表。表通常有多个字段,如何知道您的字段?

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