gpt4 book ai didi

mysql - 如何在MySql中查找具有最高优先级的行?

转载 作者:行者123 更新时间:2023-11-29 12:58:39 24 4
gpt4 key购买 nike

[抱歉,如果这是转发的话]

我有多种产品。它们可以属于多个组,即一种产品可以属于多个组。每个组都有一个优先级。我有 2 个表,一个具有 Product_id-group_id 映射,另一个具有 group_id-priority 映射。我需要一个product_id-group_id结果,它返回具有最高优先级的product_id的组。

例如源表:

table1 = product_id | group_id      table2 = group_id | priority
1 | g1 g1 | 1
1 | g2 g2 | 2
2 | g1 g3 | 3
2 | g2
2 | g3

期望的结果:

product_id | group
1 | g2 # because out of groups g1 and g2, g2 has more priority
2 | g3 # 3 = max_priority among groups g1, g2 and g3

我需要一个SQL 查询来返回此结果。如果你们能提出一个查询,使其仅返回所需的product_ids 列表的映射,那就更好了。

我们正在使用 MySQL 5.5。唯一的product_ids将<1m,组将不超过1000。

任何帮助或指示表示赞赏。谢谢大家。

最佳答案

您可以使用 substring_index()group_concat() 来完成此操作:

select t1.product_id,
substring_index(group_concat(t1.group_id order by t2.priority desc), ',', 1) as group_id
from table1 t1 join
table2 t2
on t1.group_id = t2.group_id
group by t1.product_id;

关于mysql - 如何在MySql中查找具有最高优先级的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23664513/

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