使用group_concat删除与链接表的重复项



我正在使用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

大多数图书馆员坚持保留他们编目的作品创作者的名字顺序。

最新更新