SQL Where子句将列表传递给列

时间:2012-03-20 22:54:33

标签: sql-server sql-server-2008 sql-server-2008-r2

我有一些表DOCUMENTS有一个列TYPE_ID和一个名为TYPES的表 现在我想创建一个查询,在我的DOCUMENTS上过滤所有包含TYPE_ID列表的文档,该列表可以是单个元素或元素种类

正常查询是:

Select * From DOCUMENTS Where TYPE_ID = myValue

但是当它可以是已知元素的列表时,wuery看起来像

Select * From DOCUMENTS Where TYPE_ID = myValue1 or TYPE_ID = myValue2 or TYPE_ID = myValue3

但是如果你有n个元素......这个查询怎么办呢?

1 个答案:

答案 0 :(得分:9)

你想要IN条款:

SELECT *
FROM  Documents 
WHERE Type_ID IN (myValue1, myValue2, myValue3)

作为旁注,如果您对本条款不熟悉,则无法执行之类的内容:

@myVar = '1,2,3'
select * FROM Documents where Type_ID in (@myVar)

有类似这样的解决方案。但我指出它是因为当人们不熟悉IN条款时似乎会出现这种情况。