sql >> データベース >  >> RDS >> Mysql

このMySQLクエリを並べ替える方法

    私はあなたが欲しいと思います:

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

    理論的根拠:ORDER BY 句はに配置する必要があります すべてUNION ALL サブクエリ-したがって、GROUP_CONCAT()の外部にある必要があります 、外側のCONCAT()

    また、CONCAT()は必要ないことに注意してください GROUP_CONCAT() :MySQLはデフォルトですでにそれを行っています。




    1. 高精度のMySQLNOW()関数

    2. データベース管理用のMySQLバックアップおよび復元コマンド

    3. 分類を使用したフィールドルールの適用

    4. OracleのTO_YMINTERVAL()関数