2011-12-29 17 views
2

列に'product_id', 'price', ...(など)があるテーブルで。私は与えられたproduct_idのための最低でユニークな価格でレコードを取得する必要があります。
期待した結果が得られず、別の文章を試しました。MYSQL - 一意の最小値を取得

SELECT `price` , `product_id` 
FROM bids 
WHERE `product_id` = 2 
GROUP BY `price` 
HAVING COUNT(`price`) = 1 
ORDER BY `price` 
LIMIT 1; 

しかし、LIMITORDERに頼らエレガントな解決策ではないと思わ:最後に、私は(product_id = 2のために)この文に出くわしました。 MIN()関数を使用して同じレコードを取得するにはどうすればよいですか?

答えて

0

の価格で行を返す必要があります。

SELECT MIN(t1.price) AS price, t1.product_id 
FROM 
(
    SELECT price, product_id 
    FROM bids 
    WHERE product_id = 1 
    GROUP BY price, product_id 
    HAVING COUNT(price) = 1 
) t1 

注:MIN/MAX vs ORDER BY and LIMIT

+0

これは機能します!この文を使用するのではなく、MySQLの呼び出しの効率が向上すると思いますか? そうでなくても、それはもっと清潔な解決策であるようです。 – Enric

+0

@エリック、私はあなたに古い記事を紹介したいと思います!参照してください:http://stackoverflow.com/questions/426731/min-max-vs-order-by-and-limit私はそれを含めるために私の答えを変更しました.. – Nonym

+0

ありがとうございました。あなたの答えは役に立ちました、私は今使っているものです。 – Enric

0

Skydreamer、わかりませんが、私が理解しているように、opは最初の一意の値を求めています。価格は-1,1,2,2,3-ある場合 クエリが分析するために、あなたがすでにproduct_idを指定しているので、これは動作するはずです。3.

+0

私は質問をよく理解していませんでした。答えを削除しました! – Cydonia7

関連する問題