2011-12-29 1 views
2

을 가져옵니다. 주어진 product_id에 대해 가장 낮고 고유 한 가격으로 레코드를 얻어야합니다.
예상되는 결과없이 다른 문장을 시도했습니다.MYSQL - 유일한 최소값 얻기 <code>'product_id', 'price',</code> ... (및 기타) 열이있는 테이블에서

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 

Notes : MIN/MAX vs ORDER BY and LIMIT

+0

이 작품! 이 문장을 사용하는 것이 MySQL 호출의 효율성을 향상시킬 것이라고 생각합니까? 아니라고해도, 그것은 깔끔한 해결책 인 것 같습니다. – Enric

+0

@Enric, 나는 당신을 옛날 우편으로 추천하고 싶다! 참조하십시오 : 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

관련 문제