我正在使用MySQL构建一个库系统。该数据库包括音乐、作曲家和编曲人的表格。这些通过链接表进行链接。一首音乐可能有多个作曲家和/或编曲人。我有一个基本的查询可以正常工作,它显示标题、作曲家和编曲人,但如果有多个作曲家或编曲人的话,它们会出现在表中的不同行。我正在尝试使用GROUP_CONCT将这些行与;分隔符(这样每个标题在结果中只有一行,但我很难将链接表合并到逻辑中。
以下是我的表格样本:
音乐桌
music_id | music_title | musi_drawer | 音乐编号 | |
---|---|---|---|---|
5 | 650 East | 3 | 3 |
在使用GROUP BY.的查询中,可以使用类似这样的GROUP_CONNCT((表达式
GROUP_CONCAT(DISTINCT com.composer ORDER BY com.composer SEPARATOR '; ') composers
在您的查询中,将现有的ORDER BY
子句替换为:
GROUP BY mus.music_title,
mus.music_id,
IFNULL(mus.music_drawer, ''),
IFNULL(mus.music_number, '')
ORDER BY mus.music_title
你就会得到你想要的结果。
或者,如果您想在musiccomposerlink
表中保留作曲家的顺序,请使用此选项。
GROUP_CONCAT(com.composer ORDER BY mcl.music_composer_id SEPARATOR '; ') composers
大多数图书馆员坚持保留他们编目的作品创作者的名字顺序。