用于在 varchar 字段中选择最小/最大值的 Mysql 查询
Posted
技术标签:
【中文标题】用于在 varchar 字段中选择最小/最大值的 Mysql 查询【英文标题】:Mysql query for selecting min/max values in a varchar field 【发布时间】:2011-09-22 09:59:26 【问题描述】:所以我有一个 varchar 列,它应该存储产品价格(不要问我是怎么做到的,但现在我没有选择改变这个......叹气),它也可以是空白的,或包含文本之一(字面意思)“null”、“OUT”,其中两者都表示价格为 0。找到此列的 MIN 和 MAX 值的最佳和最有效的方法是什么?
PS:我对 php/mysql 混合解决方案持开放态度,因为我需要最优化和最有效的方法。这张桌子真的很大……
【问题讨论】:
我想我会添加一个数字列和一个触发器来计算它。如果您经常访问数字,最好将它们转换一次,以节省响应时间 【参考方案1】:这样的事情应该有效并且相当有效。不过,无论如何它都不会很快。
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')
【讨论】:
在我的情况下,铸造没有自动发生,它必须明确设置,否则结果如下:99429 > 10000032以上是关于用于在 varchar 字段中选择最小/最大值的 Mysql 查询的主要内容,如果未能解决你的问题,请参考以下文章