gpt4 book ai didi

mysql - 在 SET 语句中使用 MIN() MySQL

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

我正在使用 MySQL。让我们将我拥有的表称为 Inventory,如下所示:

+----+--------+--------+------------+------ -----+
|编号 |价格1 |价格2 |目标价 |数量 |
+----+--------+--------+------------+---------+
| 1 | 12 | 1 | | 0 |
| 2 | 3 | 3 | 3 | 2 |
| 3 | | 4 | | 0 |
| 4 | 2 | 2 | 2 | 2 |
| 5 | 5 | 45 | 5 | 1 |
+----+--------+--------+------------+---------+

现在,我需要将数量为 0 的任何行的 TargetPrice 更新为 Price1 和 Price2 中的最小值

我试过:

更新库存设置
目标价格 = MIN(价格 1,价格 2)
WHERE 数量 >0

但是,MySQL 提示 MIN() 函数的使用。我知道它期望 MIN() 处理列内包含的数据,而不是对指定行的两列进行 MIN()。

除游标外,还有其他实现方法吗?

编辑:Price1Price2 可以是 null0,在所有这些情况下,它应该被视为无穷大,以便与它相比,另一个价格变得最低。

最佳答案

使用LEAST而不是 MIN:

UPDATE Inventory 
SET TargetPrice = LEAST(Price1,Price2)
WHERE Quantity = 0

MIN 是对行集进行操作的聚合函数,而 LEAST 对传递的参数列表进行操作。

编辑:

UPDATE Inventory 
SET TargetPrice = LEAST(COALESCE(Price1, Price2), COALESCE(Price2, Price1))
WHERE Quantity = 0

您可以使用 COALESCE处理 NULL 值。

编辑 2:

您可以使用 NULLIF处理 0 值:

UPDATE Inventory 
SET TargetPrice = LEAST(COALESCE(NULLIF(Price1,0), Price2),
COALESCE(NULLIF(Price2,0), Price1))
WHERE Quantity = 0

关于mysql - 在 SET 语句中使用 MIN() MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31096791/

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