Mysql
 sql >> Database >  >> RDS >> Mysql

Come ordinare questa query MySQL

Penso che tu voglia:

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');

Motivazione:il ORDER BY la clausola dovrebbe andare dopo tutti UNION ALL sottoquery - quindi deve essere al di fuori di GROUP_CONCAT() , in un CONCAT() esterno .

Inoltre, tieni presente che non hai bisogno di CONCAT() dentro GROUP_CONCAT() :MySQL lo fa già per impostazione predefinita.