Mysql 将所有链接表项联接到一行中

Mysql 将所有链接表项联接到一行中,mysql,sql,Mysql,Sql,我一直在尝试获取一个查询,该查询允许我将一个事件(链接表)的所有音乐类型放在一行中,但到目前为止我一直没有成功;它不断返回两行,每行中包含关于事件的相同信息,但更改左侧的音乐类型条目。我的问题是: SELECT events.* , music_genres_link.* FROM events LEFT JOIN music_genres_link ON events.id = music_genres_link.event_id WHERE events.i

我一直在尝试获取一个查询,该查询允许我将一个事件(链接表)的所有音乐类型放在一行中,但到目前为止我一直没有成功;它不断返回两行,每行中包含关于事件的相同信息,但更改左侧的音乐类型条目。我的问题是:

SELECT 
    events.*
    , music_genres_link.* 
FROM events 
LEFT JOIN music_genres_link 
    ON events.id = music_genres_link.event_id 
WHERE events.id=1 
ORDER BY date DESC 
下面是它的回报:

如何将这两行合并为一行?我需要类型标题和类型id列

我希望获得整个事件行,并左键连接结果左侧链接表中找到的所有音乐类型,如下所示:


[事件结果][音乐类型1(id,标题)][音乐类型2(id,标题)]等

似乎有两行与加入
音乐类型链接相匹配
。你可以从两个“性别id”值-5和295中看到这一点


好了,现在您已经编辑了您的问题,您想要的是SQL中不典型的内容。你可以做到这一点,但你没有限制的数量体裁,我不会推荐它。您需要重新考虑您的表以及您想要实现的目标。

我怀疑您只是想要
group\u concat()


这假设您只需要
类型标题
。如果您想要
类型id
,则可以添加另一列。

共享示例数据和预期结果集?这不是一个完整的问题。请包括两个原始表格的样本数据。我们不能真正分解你的结果集链接(不要发布链接)。事实上,我是这样做的。但是,我如何将它们放在一行中呢?其中一种方法是选择您想要的一个,并将其添加到
中,其中
join
Clauedimo raichev是绝对正确的-您必须首先定义:它们应该如何组合在一行中?你想保留一排,去掉另一排?您想通过逗号分隔的值列表将它们组合起来吗?有多种可能性…@IURIDIA由于您的数据似乎不一致,为什么您有两种性别类型,具有不同的ID和相同的IDnames@dimoraichev这是对我在服务器上的JSON文件的引用。
SELECT e.*, GROUP_CONCAT(mgl.genre_title) as genres
FROM events e LEFT JOIN
     music_genres_link mgl
     ON e.id = mgl.event_id 
WHERE e.id = 1 
GROUP BY e.id;