2

我想在 mysql 查询中实现最少,但最少不应该是 0 我该怎么做?

这是我的查询

    LEAST(price, price_double, price_triple, price_quad) AS minvalue

它现在计数为 0,但我不想计数 0 并在没有零的情况下搜索结果

例如

   price            100
   price_double     75
   price_tripple    50
   price_quad       0

最小值将是 50 而不是 0,但现在它包括 0。

请帮助我做到这一点,我遇到了很多麻烦,我搜索了很多但没有成功,谢谢一百万吨提前谢谢。

4

3 回答 3

1

您可以caseleast()函数中使用来执行此操作。不幸的是,least()如果任何参数在最新版本的 MySQL 中为 NULL,则返回 NULL。因此,这使用了一个很大的虚拟值:

least(case when price > 0 then price else 999999 end,
      case when price_double > 0 then price_double else 999999 end,
      case when price_triple > 0 then price_triple else 999999  end,
      case when price_quad > 0 then price_quad else 999999 end
     )
于 2013-05-10T14:37:26.637 回答
1

使用 where 子句

 SELECT LEAST(price, price_double, price_triple, price_quad)
 FROM ....
 WHERE LEAST(price, price_double, price_triple, price_quad) > 0
于 2013-05-10T14:40:09.517 回答
1

这与 Gordon Linoff 的解决方案相同,只是更短一点:

LEAST
(
    IF(price > 0, price, 999999),
    IF(price_double > 0, price_double, 999999),
    IF(price_triple > 0, price_triple, 999999),
    IF(price_quad > 0, price_quad, 999999)
)
于 2013-05-10T14:57:19.137 回答