Mysql查询查找最小和最多2列,其中最少1列不得等于零

时间:2014-06-10 04:57:49

标签: php mysql sql max

每个人我都坚持在mysql中遇到奇怪的问题。我是mysql的新手,希望有人可以帮助我。

我在表格中有两列价格。mrp_pricediscounted_price

mrp_price discounted price
 400        000
 500        300 
 600        400
 700        500
 800        600

我希望我的mysql查询将最小作为300返回(mrpdiscounted price中的最小值,但不考虑额定价格的000值) 最大800mrp_pricediscounted_price中的最大值。

我的输出将如下所示:

     min(mrp_price) max(mrp_price)   min(discounted_price)  max(discounted_price)
       400                  800           300                      600

我希望我的最终输出为:

       min(price)    max(price)
          300             800

我希望借助查询获得最终输出。我现在有点清楚,让我的朋友们理解我的问题。

请帮忙,

4 个答案:

答案 0 :(得分:2)

逻辑如下:在一个中选择两行,然后找到最大值和最小值。

SELECT MAX(`t`)
     , MIN(`t`) 
FROM ( SELECT `mrp_price` as `t` FROM `table`
       UNION
       SELECT `discounted price` as `t` FROM `table` ) 
WHERE `t` != 0

如果第一列总是大于第二列:

SELECT MAX(`mrp_price`)
     , MIN(`discounted price`) 
FROM `table`
WHERE `t` != 0

答案 1 :(得分:2)

SELECT MAX(`p`)
 , MIN(`p`) 
FROM (SELECT Min(`discounted_price`) as `p` FROM `table` WHERE discounted_price!=0)
   UNION
   (SELECT Max(`mrp_price`) as `p` FROM `table` )

答案 2 :(得分:1)

我会建议这种方法:

select least(min(case when discounted_price > 0 then discounted_price else 10000 end),
             min(case when mrp_price > 0 then mrp_price else 10000 end)
            )
from table t;

答案 3 :(得分:0)

你的问题不太清楚。您是否要选择折扣最大的mrp_price,或者您希望mrp_price,其中mrp_price和折扣均为最大值。同样的情况至少。对于早期的情况,您可以尝试以下查询

SELECT MAX(mrp_price) FROM *{TABLE NAME}* WHERE discounted price=(MAX(discounted price))

类似查询最小

SELECT MIN(mrp_price) FROM *{TABLE NAME}* WHERE discounted price=(MIN(discounted price)) AND discounted price!=0