每个人我都坚持在mysql中遇到奇怪的问题。我是mysql的新手,希望有人可以帮助我。
我在表格中有两列价格。mrp_price
和discounted_price
:
mrp_price discounted price
400 000
500 300
600 400
700 500
800 600
我希望我的mysql查询将最小作为300
返回(mrp
和discounted price
中的最小值,但不考虑额定价格的000值) 最大为800
(mrp_price
和discounted_price
中的最大值。
我的输出将如下所示:
min(mrp_price) max(mrp_price) min(discounted_price) max(discounted_price)
400 800 300 600
我希望我的最终输出为:
min(price) max(price)
300 800
我希望借助查询获得最终输出。我现在有点清楚,让我的朋友们理解我的问题。
请帮忙,
答案 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