用于在varchar字段中选择最小/最大值的Mysql查询

时间:2011-09-22 09:59:27

标签: mysql

所以我有一个varchar列应该存储产品价格(不要问我怎么结果,但现在我没有选择改变这个...叹息),它也可以是空白的,或者包含其中一个文本(字面意思)“null”,“OUT”,其中两者都代表0的价格。找到该列的MIN和MAX值的最佳和最有效的方法是什么?

PS:我对php / mysql混合解决方案持开放态度,因为我需要最优化和最有效的方法。这张桌真的很大......

1 个答案:

答案 0 :(得分: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')