我正在使用MySQL。让我们称之为一个表,我为Inventory
,看起来是下面:在SET语句中使用MIN()MySQL
+----+--------+--------+-------------+----------+ | ID | Price1 | Price2 | TargetPrice | Quantity | +----+--------+--------+-------------+----------+ | 1 | 12 | 1 | | 0 | | 2 | 3 | 3 | 3 | 2 | | 3 | | 4 | | 0 | | 4 | 2 | 2 | 2 | 2 | | 5 | 5 | 45 | 5 | 1 | +----+--------+--------+-------------+----------+
现在,我需要更新TargetPrice到价格1和Price2的最小值,其数量为0
我有任何行尝试:
UPDATE Inventory SET TargetPrice= MIN(Price1,Price2) WHERE Quantity >0
然而,MySQL的抱怨MIN()函数的用法。我知道它期望MIN()处理列中包含的数据,而不是取指定行的两列的MIN()。
无论如何要实现这个比游标?
编辑: Price1
和Price2
可以null
或0
并且在所有这些情况下,应为无穷大,这样其他的价格获取在反对它相比是最小的治疗。
谢谢。但是,对于ID = 3,价格1为空,因此上面的LEAST()返回NULL。我想在这种情况下返回价格2。所以基本上,如果两个价格中的任何一个为0或零,我需要返回另一个价格,并且对于所有其他条件,数学最小。有什么帮助吗? – Kallol
Thx再次。我没有使用'COALESCE'的原因是它只处理NULL。我需要处理0也作为类似的行为NULL。尽管我原来的问题中没有示例数据,但我现在已经更改了它以包含此要求。可能'CASE'可以提供帮助吗?但是如果两者都是NULL(我们需要报告一个NULL)? – Kallol
@卡洛尔再次编辑。 –