mysql - 在 MySQL 中,我如何加入并只获得一组中的第一个

标签 mysql

我有 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/

相关文章:

mysql - 用于获取订单状态的复杂 SQL 查询

php - 使用 php 导出数据库时出现严格标准错误

c# - 关闭 MySql 数据读取器连接

php - 在 WHILE 循环中勾选复选框

php mysql 不插入数据

php - 如何在 laravel 5.2 中将多选下拉数据插入数据库

c# - 命令执行期间遇到 MySQL fatal error - 循环遍历文件夹中的所有 csv 文件以加载数据本地 infile

mysql - Codeigniter 数据库重新连接不起作用

PHP/MySQL 显示结果列表

mysql - 计算当前时间到凌晨 12 点之间的剩余时间