我有一個表的價格,我想在最低價格的表上創建一個視圖。Mysql至少()大於0
我的表格有例如列price1,price2。
我以爲我可以用它的最小()
例如,從價目表中選擇最少(price1,price2)
但它應該只考慮大於0或不爲零的價格。
我可以用LEAST()來做到這一點嗎?
感謝您的建議。
我有一個表的價格,我想在最低價格的表上創建一個視圖。Mysql至少()大於0
我的表格有例如列price1,price2。
我以爲我可以用它的最小()
例如,從價目表中選擇最少(price1,price2)
但它應該只考慮大於0或不爲零的價格。
我可以用LEAST()來做到這一點嗎?
感謝您的建議。
不知道的一種功能限制0交替,您可以使用的情況下表達你的2分價列
select
case when price1 = 0 or price1 is null then price2
when price2 = 0 or price2 is null then price1
else least(price1,price2)
end as price
from table
使用LEAST()
功能上的表現,而不是裸列。表達式可以檢查每個price1的值,並僅在大於零時返回該值,否則返回NULL。
例如:
SELECT LEAST(IF(price1>0,price1,NULL) , IF(price2>0,price2,NULL)) FROM pricelist
人們必須小心,因爲至少如果任一比較是NULL()返回NULL。
SELECT NULLIF(LEAST(
COALESCE(NULLIF(price1,0),999999999),
COALESCE(NULLIF(price2,0),999999999)),
999999999) AS least_price
FROM pricelist
我認爲價格可以是零,零或大於零但不小於零。我使用NULLIF強制價格爲零,如果它爲零。然後使用COALESCE強制NULL是一個非常大的值,肯定比另一個值大。
比較兩個使用最少。
如果兩個價格最初都是NULL或零,則比較返回非常大的值。這可能不是你想要的,所以再次使用NULLIF來創建NULL。
[查詢獲取大於零的最小值並且不是NULL]可能的重複(http://stackoverflow.com/questions/9684757/query-to-get-lowest-value-thats-greater-than-零ANS-是 - 不能爲空) – sjagr 2014-08-28 18:27:09