MySQL HAVING MIN()不返回最小值

时间:2015-01-08 15:58:16

标签: mysql

我遇到了一个没有做我想做的MySQL查询。从产品图片列表中,我需要获得具有最低order个数字的图片。我使用下面的查询来执行此操作:

SELECT id FROM media
WHERE media.productgroup_id = 102
AND media.product_id= 902
AND media.type = 0
HAVING MIN(media.order)

数据库表media包含:

id    | productgroup_id | product_id | order | type
47215 | 102             | 902        | 2     | 0
47216 | 102             | 902        | 1     | 0
47217 | 102             | 902        | 3     | 0 

运行上面的查询会返回我的身份47215,我期待47216。所以它返回最小id,而不是最小顺序。

我犯了什么错误?

2 个答案:

答案 0 :(得分:3)

order排序并获取第一个元素

SELECT id 
FROM media
WHERE media.productgroup_id = 102
AND media.product_id= 902
AND media.type = 0
order by media.order asc
limit 1

having用于您未构建的群组。

答案 1 :(得分:1)

如果你的标准比min更复杂,你也可以使用子查询来解决这个问题。话虽这么说,@ jeurgen-d的答案可能是你的情况更快的答案。我只想指出不止一种方法可以给这只猫上皮。

SELECT id 
FROM media
    INNER JOIN (
        SELECT min(id) 
        FROM media 
        WHERE 
            media.productgroup_id = 102
            AND media.product_id= 902
            AND media.type = 0
    ) as m2 
    ON media.id = m2.id