【发布时间】:2014-10-18 19:57:26
【问题描述】:
我有一个这样的示例表:
Year, Make, Model
1991 Honda Accord
1992 Honda Accord
1993 Honda Accord
1993 Ford Explorer
如果我想获取 1992-1993 年生产的所有品牌,则返回的行应该是“本田”,因为福特(在我的示例中)在 1993 年只生产了一辆汽车,但在 1992 年没有生产一辆。
对我可以使用的查询有什么想法吗?
编辑:
使用下面答案中的查询来使用 IN 语句,确实有效,但是当我执行 25 条 IN 语句时,花费的时间太长并且超时。
我从 1990 年 1991 年开始测试它,然后是 1990 年 1991 年 1992 年等......当它达到 2000 年左右时,它需要太长时间并且超时。我确实可以选择只做两年(开始年和年末),但我担心这不会那么准确,因为制造商可以在开始年参数甚至年末参数中生产汽车,但是有没有生产介于两者之间的汽车,更糟糕的是,当我开始使用模型而不是品牌进行此操作时,我肯定必须检查所有年份。
表定义
CREATE TABLE Cars
( year INT,
Make VARCHAR(20),
Model VARCHAR(20)
);
表格数据
INSERT INTO Cars
SELECT 1991, 'Alfo', 'Rom'
UNION
SELECT 1992, 'Alfo', 'Rom'
UNION
SELECT 1993, 'Alfa', 'Rom'
UNION
SELECT 1994, 'Alfa', 'Rom'
UNION
SELECT 1992, 'Honda', 'Accord'
UNION
SELECT 1993, 'Honda', 'Accord'
UNION
SELECT 1994, 'Honda', 'Del Sol'
UNION
SELECT 1993, 'Acura', 'Integra'
UNION
SELECT 1994, 'Acura', 'TL'
UNION
SELECT 1993, 'Ford', 'Explorer'
UNION
SELECT 1994, 'Honda', 'Accord';
【问题讨论】: