Mysql 多对多与映射表返回一行并连接会导致重复行的值


Mysql Many to Many with Mapping table return one row and concatenate the values that would cause duplicate rows

我正在使用mysql,并且有三个表,一个用于事件,一个用于官员,一个映射表。我将如何查询以便发生以下情况:

  • 每个事件一行
  • 将官员的多个值连接到相应的单个事件行中。

表的结构如下:

**Official** 
-------------
id    name
-------------
1     ali
2     ahmed
3     john
4     king
6     kyle
**Event**
-------------
id    name
-------------
1     event 1
2     event 2
3     event 3
**Mapping**
-------------
id   oid   eid
-------------
1     1     1
2     3     1
3     6     2
4     1     3
5     4     3
6     5     3
7     6     3
您可以使用

INNER JOINGROUP_CONCAT,请参见以下示例:-

SELECT 
E.id, E.name, GROUP_CONCAT(O.name) OfficialName
FROM Mapping M 
INNER JOIN Event E
    ON M.eid = E.id
INNER JOIN Official O
    ON M.oid = O.id
GROUP BY E.id