gpt4 book ai didi

MySQL 查询检索特定条件中的最大值

转载 作者:行者123 更新时间:2023-11-29 13:04:12 25 4
gpt4 key购买 nike

我有不同排名的产品。这些产品可能是 super 组的成员(例如 Cream)。

product_id | supergroup | rank | other_info

1 | Cream | 3 | Eric
2 | Zep | 1 | Jimmy
3 | Zep | 4 | Jon Paul
4 | Cream | 3 | Jack
5 | Cream | 4 | Ginger
6 | Who | 4 | Roger
7 | Who | 5 | John
8 | Who | 3 | Pete

我想获取每个组的最高产品排名,以及该产品 ID 的其他信息。排名并不适用于集团内的排名。它们是适用于系统中所有产品的排名。因此,即使在同一组中,多个产品也可能具有相同的排名。

编辑:修复了“other_info”。我在那里胡言乱语了。还加了一行。结果应从最高排名到最低排名。但它们也应该只包含每个 super 组中排名最高的product_id,以及匹配的other_info

product_id | supergroup | rank | other_info
2 | Zep | 1 | Jimmy
8 | Who | 3 | Pete
1 | Cream | 3 | Eric

我可以通过一个简单的查询来做到这一点吗?现有系统的查询已经涉及超组上的 GROUP BY 语句,并且 SELECT 中没有聚合器。这会导致组内出现随机但连贯的行。修改查询以获得完整行的最简单方法是什么,但始终是每个 super 组中排名最高的成员。

如果没有办法,那这个呢:不用GROUP BY也可以吗?

最佳答案

SELECT t.*
FROM your_table t
JOIN (
SELECT MIN(product_id) as product_id #if there are multiple products with the same (min) rank in the same supergroup - get the one with lowest product_id
FROM your_table tt
JOIN (
SELECT supergroup, MIN(rank) as min_rank
FROM your_table
GROUP BY supergroup
) mr ON mr.supergroup = tt.supergroup AND mr.min_rank = tt.rank
GROUP BY tt.supergroup, tt.rank
) as mid ON mid.id.product_id = t.product_id
ORDER BY whatever_you_need_to

您需要在(supergroup,rank)上建立索引才能有效运行。

关于MySQL 查询检索特定条件中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22953656/

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