2011-12-29 33 views
2

在具有列:'product_id', 'price', ...(和其他)的表中。我需要爲給定的product_id獲取具有最低和唯一價格的記錄。
我嘗試了不同的句子而沒有預期的結果。最後,我碰到這句話來(爲product_id = 2):MYSQL - 獲取唯一的最小值

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

但它似乎不是一個優雅訴諸LIMITORDER解決方案。我如何使用MIN()函數或其他東西獲得相同的記錄?

回答

0

價格這應該工作,因爲你已經指定product_id分析:

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 2011-12-29 18:39:28

+0

@恩裏克,我想把你介紹給一位老職務!看到這裏:http://stackoverflow.com/questions/426731/min-max-vs-order-by-and-limit我也修改了我的答案,包括它.. – Nonym 2011-12-29 18:46:25

+0

非常感謝。你的答案是有幫助的,到現在爲止我將使用。 – Enric 2011-12-29 18:54:04

0

Skydreamer,我不確定,但據我所知,它想要的第一個獨特的價值。 如果價格1,1,2,2,3-查詢應返回一行的3

+0

所以我很難理解這個問題。刪除了答案! – Cydonia7 2011-12-29 17:47:52