在同事的帮助下,我们终于解决了这个问题。希望有人可能需要它。如果有人使它变得简单得多,这是受欢迎的。
BEGINSET @v=0;SET @v1=0;SELECt tmp.cnt INTO @vFROM (SELECt Id, count(ID) AS cnt, GROUP_CONCAt(name) FROM test GROUP BY id) tmpORDER BY tmp.cnt DESC LIMIT 1;SET @str=' '; WHILE(@v>@v1) DOSET @v1=@v1+1; IF(@str='') THENSET @str=CONCAt(@str,'ID, REPLACe(SUBSTRINg(SUBSTRING_INDEX(GROUP_CONCAt(NAME), '','',', @v1,'),LENGTH(SUBSTRING_INDEX(GROUP_CONCAt(NAME),'','',', @v1,'-1)) + 1),'','','''') AS Code' ,@v1); ELSESET @str= CONCAt(@str,',REPLACE(SUBSTRINg(SUBSTRING_INDEX(GROUP_CONCAt(NAME),'','',', @v1,'),LENGTH(SUBSTRING_INDEX(GROUP_CONCAt(NAME),'','',' , @v1,' -1)) + 1),'','','''') AS Code',@v1); END IF; END WHILE;SET @str=CONCAt('SELECT ' , @str, ' FROM test GROUP BY ID'); PREPARE MYSQLQUERYFROM @str; EXECUTE MYSQLQUERY; DEALLOCATE PREPARE MYSQLQUERY; END


