2017-02-23 2 views
-2

사용자 ID를 기반으로 0이 아니고 비어 있지 않은 가격을 사용하여 아래 테이블에서 MIN 가격을 얻고 싶습니다. 단일 MYSQL 쿼리에서 사용자 ID를 기반으로 MIN 가격으로 단일 레코드를 얻는 방법. 다음은 올바른 쿼리가 포함 된 쿼리입니다.Mysql은 0이 아닌 0이 아닌 비어있는 값을 얻습니다.

SELECT * 
FROM SEARCH 
RIGHT JOIN offers ON search.search_id=offers.search_id 
WHERE search.user_id='1' 

테이블 이름 : 검색

search | search_id | user_id | datetime 
1  | 1   | 1  | - 

테이블 이름 : 제공

offer_id | search_id | price 
1  | 1   |  
2  | 1   | 0  
3  | 1   | 506.1  
4  | 1   | 285.3 

답변

2

쿼리가 될 것입니다 :

SELECT * 
FROM SEARCH 
RIGHT JOIN offers ON search.search_id=offers.search_id 
WHERE search.user_id='1' AND search.price > 0 
ORDER BY search.price ASC LIMIT 1 
0

당신이 최소한의 가격을 선택하고자 할 때, 당신에게 MYSQL "MIN"기능을 사용할 수 있습니다. 이 함수의 경우 쿼리에 GROUP BY가 필요합니다.

이와 비슷한 방식으로 요구 사항을 편집하십시오.

SELECT *, MIN(price) as `minPrice` 
FROM SEARCH 
RIGHT JOIN offers ON search.search_id=offers.search_id 
WHERE search.user_id='1' AND search.price > 0 
GROUP BY search.search_id 
0

상이한 결합 조건 이용하는 대안 :

SELECT MIN(o.price) min_price 
FROM search s 
JOIN offers o ON (
    s.search_id = o.search_id 
    AND o.price IS NOT NULL 
    AND o.price > 0 
) 
WHERE s.user_id = '1' 
관련 문제