我正在使用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
@卡洛爾再次編輯。 –