目的:计算每个题用户做几次
SELECT t.question_id ,COUNT(t.question_id)
from (
SELECT a.id,SUBSTRING_INDEX(SUBSTRING_INDEX(a.fail_question_ids,',',b.help_topic_id + 1),',',-1) as question_id
from mental_user_error_up2023_49 a,mysql.help_topic b
WHERE a.id = '-8JVWZZVQhCLWm273l3H8Q'
and help_topic_id < LENGTH( a.fail_question_ids ) - LENGTH(REPLACE(a.fail_question_ids,',','')) + 1
)t GROUP BY t.question_id
计算一行有几个值help_topic_id < LENGTH( a.fail_question_ids ) - LENGTH(REPLACE(a.fail_question_ids,‘,’,‘’)) + 1,例:a=1,2,3,4
个数值=a的长度-a去除逗号的长度+1
help_topic_id > 这个长度的都是重复值
SUBSTRING_INDEX(目标值,分割符号,要截取位位置)
截取位置:1表示第一位 ; -1表示最后一位
sqlserver版本(2014以上)
SELECT
b.value AS hrmid,
a.subject,a.begindate,a.enddate,a.finish
FROM
uf_taskinfo a
CROSS APPLY STRING_SPLIT(a.hrmid, ',') AS b
WHERE a.prjid = '1'
GROUP BY b.value,a.subject,a.begindate,a.enddate,a.finish