在mysql表中找到第二个最小值

时间:2011-12-19 06:36:28

标签: mysql

我有一个带有以下记录集的mysql表。

Product_id reg_price  sale_price

244         50          40

244         45          40 

244         45           0   

244         40           0

我需要从此表中找到最大和最小reg_price,max,min sale_price,条件是如果sale_price为0.00,那么它应该返回第二个最高值,即40.

我的疑问是:

SELECT MAX(regular_price) AS max_regular_price, 
       MIN(regular_price) AS min_regular_price, 
       MAX(sale_price) AS max_sale_price, 
       MIN(sale_price) AS min_sale_price
FROM `table` 
where product_id` = 244 LIMIT 1

但它将min_sale_price设为0.00。我应该如何修改它以获得所需的结果?

2 个答案:

答案 0 :(得分:1)

SELECT
    MIN(NULLIF(sale_price, 0))
FROM `table`
WHERE product_id = 244;

答案 1 :(得分:0)

我认为您可以归档结果的唯一方法是使用LIMIT 2进行多次查询,选择第二个结果MIN,而MAX不用于从MIN或MAX中选择第x个值。

SELECT sale_price AS min_sale_price
FROM `table` 
WHERE product_id` = 244 ORDER BY sale_price LIMIT 2

所以第二个结果是MIN + 1