gpt4 book ai didi

mysql - 需要有关返回公共(public)行的 MYSQL 查询的帮助

转载 作者:行者123 更新时间:2023-11-29 07:50:55 25 4
gpt4 key购买 nike

我有一个这样的示例表:

Year, Make, Model
1991 Honda Accord
1992 Honda Accord
1993 Honda Accord
1993 Ford Explorer

如果我想获取 1992-1993 年生产的所有品牌,则返回的行应该是“Honda”,因为福特(在我的示例中)在 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';

SQL Fiddle

最佳答案

I tested it starting like 1990 1991, and then 1990 1991 1992, etc... when it gets around 2000 it takes too long and times out. I do have the choice of just doing two years(begin year, and end year) but I fear that wont be as accurate, as a manufacturer could have products a car in the beginning year parameter, and even the end year parameter, but have NOT produced a car somewhere in between, and even worse, when I start doing this with Models instead of makes, I definitely HAVE to check all years.

您需要使用HAVINGCOUNT

SELECT  t.Make
FROM
(SELECT DISTINCT c.YEAR, c.Make
FROM cars c) t
WHERE t.YEAR IN (1992,1993,1994) -- all the years
GROUP BY t.make
HAVING COUNT(*) = 3 --total number of years

SQL Fiddle Demo

关于mysql - 需要有关返回公共(public)行的 MYSQL 查询的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26443964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com