我有一个产品表,它有一个 product_id,我还有其他表,它就像一个组一样。让我们说:
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 秒才能运行,而且很多。我知道有办法快速做到这一点。但我想不通