2011-12-19 76 views
0

私は以下のレコードセットを持つmysqlテーブルを1つ持っています。私は私のmysqlテーブルの2番目に小さい値を見つける

すなわち40、MAX、SALE_PRICEが0.00であるならば、それはそれよりも二番目に高い値を返す必要があることを条件とこの表から分SALE_PRICEを最大値と最小reg_priceを見つける必要がある

Product_id reg_price sale_price 

244   50   40 

244   45   40 

244   45   0 

244   40   0 

クエリは次のとおりです。

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

だろう - MIN、MAXはとにかく単一の行を返すしようとしている - あなたはそれを削除しようとしていますか? –

+0

はい、私は限界を削除しましたが、私の問題は解決しませんでした。最小sales_valueが0.00の場合は、テーブルから2番目に小さいsales_valueが必要です。 –

+0

'WHERE sale_price!= 0'を追加できますか? –

答えて

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

感謝、これは私のために働く。 :) –

0

結果をアーカイブすることができる唯一の方法は、LIMIT 2で複数のクエリを作成し、MINまたはMAXからx番目の値を選択するようにMAXが設計されていないことです。

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

だから、2番目の結果は、あなたがLIMITを使って何を推論たMIN + 1

+0

しかし、私は値を取得するための別のクエリを書く必要がある、私は与えられた条件でクエリでmin-max reg_priceとmin-maxセール価格を取得したい。 1つのクエリでこれを行うことはできませんか? –

+0

私はそうは思わない - しかし、私はSQL重い重量が答えるのを待っている。 –

関連する問題