mysql group_concat order by utf8

标签 mysql utf-8 internationalization

我有以下问题 我有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/

相关文章:

c++ - MFC 中的国际化

java - 从 messages.properties 访问 application.properties

php - 使用单连接查询从第二个表中获取所有行数据

PHP+MySQL 无法登录

excel - 是否可以强制 Excel 自动识别 UTF-8 CSV 文件?

android - 菲律宾元(比索)符号 ₱ 在 Android 中显示不正确

python - 如何在带有 i18n 的 mako 渲染模板中使用 _?

php - 在 PHP/MYSQL 中,for 循环中的 NTH 项查询或在初始查询后推送 ids 数组后的 IN 查询哪个更快?

当按下下一个按钮时,PHP 分页不会改变

PHP 去除字符串中的垃圾