2011-09-22 59 views
1

因此,我有一個應該存儲產品價格的varchar列(不要問我該如何結束,但現在我無法更改此選項...嘆氣),它也可以是空白的,或者包含其中一個文字(字面上)「null」,「OUT」,其中兩個都代表0的價格。找到MIN和MAX的最好和最有效的方法是什麼這一欄的價值?用於在varchar字段中選擇最小/最大值的Mysql查詢

PS:我打開php/mysql混合解決方案,因爲我需要最優化和有效的方式。這張桌子真的很大......

+0

我想我會添加一個數字列和觸發器來計算。如果你經常訪問數字,最好轉換一次,爲了響應時間 – Martin

回答

3

像這樣的東西應該工作,並且合理高效。不過,這不會很快。

SELECT 
    MIN(CAST(price AS DECIMAL(8,2))) as price_min, 
    MAX(CAST(price AS DECIMAL(8,2))) as price_max 
FROM products 
WHERE price NOT IN('', 'null', 'OUT') 

測試之後,我注意到,顯然鑄造是自動完成的,所以你可以這樣做:

SELECT 
    MIN(price) as price_min, 
    MAX(price) as price_max 
FROM products 
WHERE price NOT IN('', 'null', 'OUT') 
+2

在我的情況下,鑄件不會自動發生,它必須明確設置,否則結果如下所示:99429> 10000032 –

相關問題