我有 3 个表:events、products 和关联表 event_products。
事件:event_id,
产品:产品编号、产品名称
event_products:event_id, product_id
一个事件可以没有或有很多产品。
我的问题是我需要一个事件列表,并且每个事件只需要一个结果行。在列表中,每个事件我只需要一个产品,最好是添加的第一个产品,或者如果无法完成,则使用具有最低 product_id 的产品。
select e.event_id, ep.product_id, p.product_name
FROM `events` e
LEFT OUTER JOIN event_products ep on ep.event_id = e.event_id
LEFT OUTER JOIN products p on p.product_id = ep.product_id;
当然,将为每个分配了多个产品的事件返回多行。
谢谢
最佳答案
select e.event_id, min(ep.product_id), p.product_name
FROM `events` e
LEFT OUTER JOIN event_products ep on ep.event_id = e.event_id
LEFT OUTER JOIN products p on p.product_id = ep.product_id
group by e.event_id, p.product_name
;
关于mysql - 在 MySQL 中,我如何加入并只获得一组中的第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803690/