T-SQL:'其中'查询 - 要在

时间:2016-01-22 16:16:14

标签: tsql sql-server-2012

我在SQL Server 2012中工作。我知道我可以在那里使用'其中'查询中的子句,用于对单个列执行多变量搜索,例如:

select * from cars where manufacturer in ('Ford', 'Toyota')

将返回所有以Fort或Toyota作为制造商的行。但是,如果我需要更具体一点,我想看看1995年福特汽车和1996年丰田汽车制造的汽车怎么办?像这样做一个查询:

select * 
from cars 
where manufacturer in ('Ford', 'Toyota') 
  and year in ('1995', 1996)

会给我带回我需要的数据,还有丰田1995年制造的汽车,以及1996年制造的福特汽车,我不想在我的数据集中使用。我已经看到了一些建议来做这样的查询:

select * 
from cars 
where (manufacturer, year) in (('Ford', '1995'), ('Toyota', 1996))

然而,这不能编译......我认为这是一个MySQL查询。我还希望能够从其他表中获取where查询的参数,而不必输入' Ford',' Toyota' 1995' ;每次我想搜索

2 个答案:

答案 0 :(得分:2)

也许这就是你要找的东西?

select * from cars 
where (manufacturer = 'Ford'   and year = '1995') 
   or (manufacturer = 'Toyota' and year = '1996')

答案 1 :(得分:1)

在问题中键入过滤器时恰好是过滤器:

WHERE 
    (manufacturer='Ford' and year=1995) or 
    (manufacturer='Toyota' and year=1996)

没有必要使WHERE语句过于复杂。实际上,where (manufacturer, year) in (('Ford', '1995'), ('Toyota', 1996))不是标准的SQL