gpt4 book ai didi

MySQL - 需要使用 WHERE 子句选择 MIN 和 MAX,作为较大查询的一部分

转载 作者:行者123 更新时间:2023-11-29 10:41:18 24 4
gpt4 key购买 nike

我有这样的东西:

SELECT foo1, foo2, foo3, MAX(foo4) AS max FROM table WHERE foo5 = bar;

问题是,除了将 WHERE foo5 = bar 子句应用于整个查询之外,我还想为 foo4 指定一个条件。我不只是想要整个表中 foo4 的最大值,而是当另一个字段等于特定值时 foo4 的最大值。所以像这样。

SELECT foo1, foo2, foo3, MAX(foo4 WHERE field=otherthing) AS max FROM table WHERE foo5 = bar;

我该怎么做?

编辑:这里有一些更多细节。这是我当前的查询:

SELECT Car_Type, Car_Imm, MIN(Use_Kilom) AS Init_Kilom, 
MAX(Use_Kilom) AS Final_Kilom, MAX(Use_Kilom)
- MIN(Use_Kilom) AS Distance_Kilom, null, null,
SUM(Use_Amount) AS Amount_Total,
SUM(Use_Liter) / 20 AS Liter_Total, null, null
FROM fueluse, car
WHERE Use_Car = Car_Code AND
(Use_Date BETWEEN '$datefrom' AND '$dateto')

在这种情况下,MAX(Use_Kilom) 和 MIN(Use_Kilom) 都从整个表中获取绝对最大值和最小值。我只想让他们获得每个 Use_Car 值的最大值。

我尝试分别用以下内容替换它们:

(SELECT MIN(Use_Kilom) FROM fueluse, car WHERE Use_Car = Car_Code) AS Init_Kilom
(SELECT MAX(Use_Kilom) FROM fueluse, car WHERE Use_Car = Car_Code) AS Final_Kilom

但他们仍然为我提供整个 Fueluse 表的 Use_Kilom 字段中的绝对最小值和最大值,而不仅仅是每个 Use_Car 的 Use_Kilom 的最大值和最小值。请注意,Use_Car 和 Car_Code 作为外键链接。

最佳答案

我希望看到一个 group by 子句,然后使用聚合函数(min、max、sum 等)。在这种情况下,可能按 Car_Type、Car_Imm 分组。隐式连接也应该更改为显式连接。

SELECT Car_Type, Car_Imm, MIN(Use_Kilom) AS Init_Kilom, 
MAX(Use_Kilom) AS Final_Kilom, MAX(Use_Kilom)
- MIN(Use_Kilom) AS Distance_Kilom, null, null,
SUM(Use_Amount) AS Amount_Total,
SUM(Use_Liter) / 20 AS Liter_Total, null, null
FROM fueluse
join car on Use_Car = Car_Code AND
where (Use_Date BETWEEN '$datefrom' AND '$dateto')
group by Car_Type, Car_Imm

如果您使用字段名所属的表名(或其别名)来限定字段名,事情会更清楚

关于MySQL - 需要使用 WHERE 子句选择 MIN 和 MAX,作为较大查询的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45434565/

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