系統中有這樣一個表table_ids,parrent_ids保存的是一串用逗號隔開的id

需求:以orleid為依據,拼接id、parent_ids,同時要求去除重復的id。
思路:先拼接id、parent_ids為一個字符串(暫且叫idstr),去除最后一個逗號,然后以roleid為依據,把idstr按逗號分割成多行,去重,再把多行拼接為一列。
其中tmp_numindex表為只有一個字段id,類型為int,保存從1到10000的連續數字。
SELECT roleid,GROUP_CONCAT(str) FROM ( SELECT DISTINCT roleid, REPLACE( SUBSTRING_INDEX(str, ',', a.id), CONCAT( SUBSTRING_INDEX(str, ',', a.id - 1), ',' ), '' )AS str FROM tmp_numindex a CROSS JOIN( SELECT roleid, CONCAT(str, ',')AS str, LENGTH(str)- LENGTH(REPLACE(str, ',', ''))+ 1 AS size FROMtable_ids )b ON a.id <= b.size ) a GROUP BY roleid
