我在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' ;每次我想搜索
答案 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