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

Sådan sorteres denne MySQL-forespørgsel

Jeg tror, ​​du vil:

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

Begrundelse:ORDER BY klausul skal gå efter alle UNION ALL underforespørgsler - så det skal være uden for GROUP_CONCAT() , i en ydre CONCAT() .

Bemærk også, at du ikke behøver CONCAT() indenfor GROUP_CONCAT() :MySQL gør det som standard allerede.




  1. Hvordan laver man arvemodellering i relationelle databaser?

  2. Postgres - Funktion til at returnere skæringspunktet mellem 2 ARRAY'er?

  3. Hvordan henter man alle rækker, der matcher mindst én værdi fra array?

  4. Mest sete videoer i denne uge