Mysql查询查找2列的最小值和最大值,其中1列的最小值不能等于零


Mysql query to find minimum and maximum of 2 columns where minimum of 1 column must not be equal to zero

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

表中有2列price。mrp_pricediscounted_price:

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

我希望我的mysql查询返回最小作为300(无论mrpdiscounted price是最小的,但不考虑折扣价格的000个值)和最大作为800(无论mrp_pricediscounted_price是最大的)。

我的输出看起来像这样:

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

我希望我的最终输出为:

       min(price)    max(price)
          300             800

我希望我的最终输出在查询的帮助下。我希望我现在能让我的朋友们明白我的问题了。

请帮忙,

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` )

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

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

我建议这样做:

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;

你的问题不太清楚。是选择折扣最大的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