在mysql表中查找第二个最小值
我有一个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
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;