2011-12-19 102 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只打算反正返回一行 - 你試圖消除它? – 2011-12-19 06:40:13

+0

是的,我刪除了限制,但它並沒有解決我的問題。如果最小的sales_value是0.00,那麼我需要從表中獲得第二小的sales_value。 – 2011-12-19 06:46:54

+0

你可以只加'WHERE sale_price!= 0'嗎? – 2011-12-19 07:55:20

回答

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

thankx,這對我有用。 :) – 2011-12-19 09:25:22

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

+0

但我需要編寫另一個查詢來獲取該值,我想在給定條件下在查詢中獲得最小 - 最大reg_price和最小 - 最大銷售價格。在一個查詢中這樣做是不可能的? – 2011-12-19 07:05:41

+0

我不這麼認爲 - 但我正在等待SQL重量級的回答。 – 2011-12-19 07:21:22