2017-02-23 49 views
-2

我想從下面的表中使用RIGHT JOIN和WHERE價格不等於零,而不是基於用戶ID的空價格最低價格。如何在單個MYSQL查詢中根據用戶標識以MIN價格獲得單個記錄。 這是我剛剛加入的查詢。Mysql得到最低價格,不是零,不爲空

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'