gpt4 book ai didi

mysql - 如何对 "GROUP BY"语句施加条件 - MySQL

转载 作者:行者123 更新时间:2023-11-29 09:10:06 25 4
gpt4 key购买 nike

我有以下 MySQL 查询:

SELECT * 
FROM products
WHERE catalog = 1
GROUP BY style
ORDER BY name ASC
limit 0, 100

由于我有多个具有相同“风格”的产品,这将返回有关具有特定“风格”的第一个产品的信息(通过 GROUP BY 条件)。

由于某些产品有“折扣”,我的问题如下:如何才能使“GROUP BY style”条件优先考虑具有“折扣”的产品折扣?我的最终目标是使用 1 次查询,而不是之后检查每个返回的样式并检查是否有任何折扣产品

如果我指定“GROUP BY style,discount”,它会返回 2 个具有相同样式的产品:1 个有折扣,1 个没有折扣。这不是我需要的——我只需要返回 1 个匹配(唯一)样式,但优先考虑那些与此样式匹配且有折扣的商品。

最佳答案

您不能在单个查询中的分组集中强加优先级。您可以在应用 GROUP BY 之前使用 WHERE 来限制结果,但这只会删除不满足 WHERE 条件的行的结果。要查找分组集中的顺序,请使用如下查询:(假设 id 是此处的主键)

SELECT p.* FROM
( SELECT style,max(discount) as highest_discount
FROM products
WHERE catalog = 1
GROUP BY style ) p1
JOIN products p
ON p.id =
( SELECT pu.id
FROM products pu
WHERE pu.catalog = 1
AND pu.style = p1.style
AND pu.discount = p1.highest_discount
LIMIT 1 )

关于mysql - 如何对 "GROUP BY"语句施加条件 - MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5835382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com