我有以下问题 我有3张表(全部使用utf8/utf8_general_ci编码) 电影、 channel ,我还有 3 个表 movie_channels
只是其他两个的组合,只有 2 个字段:movie_id、channel_id 这是我的 channel 表(代码,名称)
'1', 'ОРТ'
'2', 'ТК Спорт'
'3', 'ТК ТНВ'
'4', 'НТВ'
'5', 'НТВ+'
'6', 'TSN'
这是我的 movie_channels 表(电影 _id,channel_id) channel_id 引用 channel 表中的 code
字段
'19', '2'
'19', '6'
'95', '1'
'95', '4'
'96', '1'
'96', '4'
'97', '1'
'97', '4'
'98', '1'
'98', '4'
'99', '1'
'99', '4'
'100', '1'
'100', '4'
不要介意 id 值的引号。他们当然都是整数,不是字符,这只是粘贴问题
对于每部电影,我需要显示以逗号分隔的 channel 列表 我使用了 mysql group_concat
select t.movie_id,( select group_concat(c.name) from
movie_channels mc
join channels c on mc.channel_id=c.code
where mc.movie_id = t.movie_id
order by code desc )as audio_channel from movies t
但我不喜欢 movie_id #19 的 concat 顺序我需要上面的 sql 来显示 TSN,ТК Спорт 但它一直返回给我 ТК Спорт,TSN 。我尝试按代码 desc 排序但没有成功,尝试按 char_length(asc) 排序但没有成功 有任何想法吗 ?
最佳答案
如果对于每部电影,您想要列出播放该电影的所有 channel ,您需要这样的东西:
SELECT
mc.movie_id,
GROUP_CONCAT(c.name) AS channels
FROM movie_channels AS mc
JOIN channels AS c
ON c.code = mc.channel_id
GROUP BY mc.movie_id
ORDER BY c.code DESC;
关于mysql group_concat order by utf8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3329069/