Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment trier cette requête MySQL

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.