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

在mysql表中查找第二个最小值,mysql,Mysql,我有一个mysql表,其中包含以下一组记录 Product_id reg_price sale_price 244 50 40 244 45 40 244 45 0 244 40 0 我需要从这个表中找到最大和最小注册价格,最大,最小销售价格,条件是如果销售价格为0.00,那么它应该返回比它第二高的值,即40 我的问题是: SELECT

我有一个mysql表,其中包含以下一组记录

Product_id reg_price  sale_price

244         50          40

244         45          40 

244         45           0   

244         40           0
我需要从这个表中找到最大和最小注册价格,最大,最小销售价格,条件是如果销售价格为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

但它给出的最小售价为0.00。我应该如何修改它以获得期望的结果

我认为您可以存档结果的唯一方法是使用限制2进行多个查询,选择第二个结果最小值,而最大值不是从最小值或最大值中选择第x个值

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

所以第二个结果是MIN+1

您使用限制的理由是什么-MIN,MAX无论如何只返回一行-您尝试过删除它吗?是的,我删除了限制,但它没有解决我的问题。如果最小销售值为0.00,我需要表中第二个最小销售值。您可以只添加
WHERE sale\u price!=0
?但是我需要编写另一个查询来获取该值,我希望在给定条件下的查询中获得最小-最大注册价格和最小-最大销售价格。在一个查询中不可能做到这一点吗?我不这么认为,但我正在等待一个SQL重量级的答案。
SELECT
    MIN(NULLIF(sale_price, 0))
FROM `table`
WHERE product_id = 244;