gpt4 book ai didi

Mysql 多分组依据

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

我有一个产品表,它有一个 product_id,我还有其他 table ,它就像一个小组。比方说:

Product table(product):
ID NAME
1 - Shoes
2 - T-shirt
3 - apple
4 - any thing
5 - lorem ipsum
_______________________________________________
Group product table(g_product):
ID - GROUP ID - PRODUCT ID
1 1 1
2 1 2
3 1 5

我需要一个查询来从每个组中只获取 1 个产品。我试过这个:

select * from product as p
left join g_product as g on p.id = g.fk_prod
group by group_id

但这给我带来的只是分组的产品。

我不想要这样的结果:

1 - Shoes
3 - apple
4 - any thing

这是第1组的产品1,3和4还没有分组。

我认为它适用于此查询:

select * from product as p
left join g_product as g on p.id = g.fk_prod
group by g.group_id
union
select * from product as p
left join g_product as g on p.id != g.fk_prod
group by p.id

但这需要 30 秒才能运行,而且时间很长。我知道有办法快速做到这一点。但是我想不通

最佳答案

使用此查询获取适当的结果

SELECT p.*, 
(CASE WHEN g.gid IS NOT NULL THEN g.gid ELSE -1*p.id END) AS temp_group_id
FROM product AS p
LEFT JOIN g_product AS g ON p.id = g.fk_prod
GROUP BY temp_group_id

如果产品不属于任何组,那么我们将为其分配一个虚拟组 ID (-1*p.id)。这就是诀窍

关于Mysql 多分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19161236/

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