gpt4 book ai didi

MySQL 精确整数范围

转载 作者:行者123 更新时间:2023-11-29 02:25:44 24 4
gpt4 key购买 nike

我做了一些研究,例如数字范围查询、区间查询等,但没有一个答案给我正确的结果。

为简单起见,我将在不使用 ID 的情况下放置信息,数据库具有适当的模式,但我想创建一个查询来获取符合精确整数范围的数据。

我有这张表,但这个信息很短,无法澄清我的问题:

+------+------+--------+---------------+
| year | make | model | motor |
+------+------+--------+---------------+
| 1998 | Audi | A3 | 4 Cil 1.8 Lts |
| 1999 | Audi | A3 | 4 Cil 1.8 Lts |
| 2000 | Audi | A3 | 4 Cil 1.8 Lts |
| 2001 | Audi | A3 | 4 Cil 1.8 Lts |
| 2002 | Audi | A3 | 4 Cil 1.8 Lts |
| 2003 | Audi | A3 | 4 Cil 1.8 Lts |
| 2004 | Audi | A3 | 4 Cil 1.8 Lts |
| 2004 | Audi | A3 | 4 Cil 2.0 Lts |
| 2005 | Audi | A3 | 4 Cil 2.0 Lts |
+------+------+--------+---------------+

例如,我想获得适合 1998 - 2004 范围(4 Cil 1.8 Lts)的电机,但此查询也给我 4 Cil 2.0 Lts

SELECT DISTINCT motor
FROM general G
WHERE G.year BETWEEN 1998 AND 2004

结果表:

+---------------+
| motor |
+---------------+
| 4 Cil 1.8 Lts |
| 4 Cil 2.0 Lts |
+---------------+

我还希望这个查询在不完全符合范围的情况下返回空,我创建了另一个查询试图获得不同的结果但没有成功。

SELECT DISTINCT motor
FROM general G
WHERE G.year IN (1998, 2005);

结果表:

+---------------+
| motor |
+---------------+
| 4 Cil 1.8 Lts |
| 4 Cil 2.0 Lts |
+---------------+

谢谢大家


更新:

我的问题与品牌或型号参数无关,我对年份范围感到困惑,在这个特定示例中,如果范围在 1998 年到 2004 年之间,则获得此结果。

结果:

+---------------+
| motor |
+---------------+
| 4 Cil 1.8 Lts |
+---------------+

如果年份范围在 1998 到 2005 之间,我想获得一个空结果,因为在我的表中,数据不完全符合这个范围。

最佳答案

您似乎在问“从 1998 年到 2004 年的所有年份中,motor 列的值是多少?”

您问题中的查询回答了一个相关问题,即“motor 的值出现在 1998 - 2004 年的任何一年?”

此查询 ( http://sqlfiddle.com/#!2/53d6d/15/0 ) 通过比较奥迪制造该发动机的年数与总年数来回答您的问题。

SELECT motors.years, motors.motor
FROM (
SELECT COUNT(DISTINCT year) AS years, motor
FROM general
WHERE year BETWEEN 1998 AND 2004
GROUP BY motor
) AS motors
JOIN (
SELECT COUNT(DISTINCT year) AS years
FROM general
WHERE year BETWEEN 1998 AND 2004
) years ON motors.years = years.years

此查询 ( http://sqlfiddle.com/#!2/53d6d/17/0) 采用略有不同的方法,首先计算表中每个引擎的生产生命周期,然后将您的日期范围与生产范围进行比较。

SELECT motor 
FROM (
SELECT MIN(year) AS firstyear,
MAX(year) AS lastyear,
motor
FROM general
GROUP BY motor
) AS motors_years
WHERE firstyear=1998 AND lastyear=2004

关于MySQL 精确整数范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22393514/

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