Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So sortieren Sie diese MySQL-Abfrage

Ich glaube, Sie wollen:

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

Grund:der ORDER BY -Klausel sollte nach stehen alle UNION ALL Unterabfragen - also muss es außerhalb von GROUP_CONCAT() sein , in einem äußeren CONCAT() .

Bitte beachten Sie auch, dass Sie CONCAT() nicht benötigen innerhalb GROUP_CONCAT() :MySQL macht das bereits standardmäßig.