【问题标题】:SQL Where clause pass list to a columnSQL Where 子句将列表传递给列
【发布时间】:2012-03-20 22:54:32
【问题描述】:

我有一些表 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 个元素....这个查询怎么做呢?

【问题讨论】:

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


    【解决方案1】:

    你想要IN 子句:

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

    附带说明,如果您不熟悉此条款,您不能做类似的事情:

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

    有类似的解决方案。但我指出它是因为当人们对 IN 子句不熟悉时,它似乎会出现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 2014-01-06
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多