【问题标题】:Mysql get MIN price, not zero, not emptymysql获取MIN价格,不为零,不为空
【发布时间】:2017-02-23 11:09:37
【问题描述】:

我想使用 RIGHT JOIN 从下表中获取 MIN 价格,并且 WHERE 价格不等于零且根据用户 ID 不为空。如何在单个 MYSQL 查询中根据用户 ID 获得具有 MIN 价格的单个记录。 这是我刚刚加入的查询。

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

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

【问题讨论】:

    标签: mysql database join


    【解决方案1】:

    查询将是:

    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
    

    【讨论】:

      【解决方案2】:

      使用不同连接条件的替代方法:

      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'
      

      【讨论】:

        【解决方案3】:

        当你想选择最低价格时,可以使用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 
        

        【讨论】:

          猜你喜欢
          • 2011-01-07
          • 1970-01-01
          • 2012-07-08
          • 1970-01-01
          • 1970-01-01
          • 2020-03-10
          • 2021-04-29
          • 2015-06-10
          • 1970-01-01
          相关资源
          最近更新 更多