2011-12-19 2 views
0

У меня есть одна таблица mysql со следующим набором записей.найти второе наименьшее значение в таблице mysql

Product_id reg_price sale_price 

244   50   40 

244   45   40 

244   45   0 

244   40   0 

Мне нужно найти максимальное и минимальное reg_price, макс, мин 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. Как мне изменить его, чтобы получить желаемый результат?

+0

Что вы рассуждаете для использования LIMIT - MIN, MAX только собирается возвращать одну строку в любом случае - вы пробовали удалить его? –

+0

Да, я удалил предел, но это не решило мою проблему. Мне нужно второе наименьшее значение sales_value из таблицы, если наименьшее значение sales_value равно 0.00. –

+0

Можете ли вы просто добавить 'WHERE sale_price! = 0'? –

ответ

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

thankx, это работает для меня. :) –

0

Единственный способ, с помощью которого я могу архивировать ваш результат, состоит в том, чтобы сделать несколько запросов с помощью LIMIT 2, выбрать второй результат MIN, а MAX не предназначены для выбора x-го значения с MIN или MAX.

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

Так что второй результат будет MIN + 1

+0

, но тогда мне нужно написать еще один запрос для получения значения, я хочу получить min-max reg_price и цену продажи min-max в запросе с заданным условием. это невозможно сделать в одном запросе? –

+0

Я так не думаю, но я жду ответа на тяжелый вес SQL. –

Смежные вопросы