我遇到了一个没有做我想做的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,而不是最小顺序。
我犯了什么错误?
答案 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