从mysql字段中查找最大值和最小值,结果不应该是
zero
或null
,
我们已经尝试过,
SELECT LEAST(MIN(`product_price`), MIN(NULLIF(`product_special_price`,'0'))) as min_price,
GREATEST(MAX(`product_price`), MAX(NULLIF(`product_special_price`,'0'))) as max_price
FROM (`tbl`)
在这里我们在没有输入product_special_price
时得到NULL结果
当前输出/问题:
答案 0 :(得分:1)
您只需使用WHERE
语句过滤掉0
和NULL
值:
SELECT MIN(column) AS least, MAX(column) AS greatest
FROM table
WHERE column != 0 AND column IS NOT NULL
将column
和table
分别替换为相应的列和表格。
答案 1 :(得分:0)
您没有发布您期望的结果,所以我不能完全确定我是否正确阅读了您的问题,但CASE声明可用于消除您不想要的值。因此,当列的值为0时,您只是不将其包含在LEAST / GREATEST函数中。按照下面这种方式重写SQL,我得到min_price 72& max_price 81(使用你的SQL小提琴数据) - 这就是你所追求的吗?
SELECT
CASE tbl.simple_price
WHEN 0 THEN MIN(`price`)
ELSE LEAST(MIN(`price`), MIN(`simple_price`))
END as min_price,
CASE tbl.simple_price
WHEN 0 THEN MAX(`price`)
ELSE GREATEST(MAX(`price`), MAX(`simple_price`))
END as max_price
FROM (`tbl`)