Je pense que vous voulez :
SELECT CONCAT(
GROUP_CONCAT(
'SELECT ''', COLUMN_NAME,''' MyColumns, SUM(`', COLUMN_NAME,'`) Total FROM mydb.source_table'
SEPARATOR '\n UNION ALL \n'
),
'\nORDER BY Total DESC'
)
INTO @sql
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA = 'mydb'
AND TABLE_NAME = 'source_table'
AND COLUMN_NAME NOT IN ('ID', 'Name');
Justification :le ORDER BY la clause doit aller après tous UNION ALL sous-requêtes - il doit donc être en dehors du GROUP_CONCAT() , dans un CONCAT() externe .
Veuillez également noter que vous n'avez pas besoin de CONCAT() dans GROUP_CONCAT() :MySQL le fait déjà par défaut.