mysql 字段包含多个逗号分割的id,需要进行统计每个id对应的另一字段值,sql一行转多行

时间:2024-04-10 19:49:43

最近遇到了需要统计标签的浏览量,但是每个label_name下包含了两个三个不等的标签ID并且以逗号隔开
mysql 字段包含多个逗号分割的id,需要进行统计每个id对应的另一字段值,sql一行转多行(图1)
类似这种,这时候需要把id 拆分开来分别对应后面的浏览量,有个类似固定写法的方法:例如
统计的表名为temp 需要统计,拆分的字段为label_name,最后需要函数处理的字段为view_count(浏览量)

套入方法为:
SELECT
a.id,
a.label_name,
a.view_count,
substring_index(substring_index(tp.label_name,’,’,b.help_topic_id + 1),’,’,- 1) as label_id
FROM
temp as tp
JOIN mysql.help_topic b ON b.help_topic_id < (length(tp .label_name) - length(REPLACE(tp.label_name, ‘,’, ‘’)) + 1) ORDER BY tp.view_count DESC;

为了让大家看清楚 我也打印了a.label_name
mysql 字段包含多个逗号分割的id,需要进行统计每个id对应的另一字段值,sql一行转多行(图二)
注意观察图二id为194的数据(图一中最后一行数据就是没处理之前的id为194的数据,懒得在截图了),两个id在label_id列已经拆分,并且对应的浏览量也分别对应 此时以这个结果集再去统计就会简单多了 无非就是group by 和 sum 了。希望对大家有帮助