Tôi nghĩ bạn muốn:
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');
Cơ sở lý luận:ORDER BY
mệnh đề nên đi sau tất cả UNION ALL
truy vấn con - vì vậy nó cần phải nằm ngoài GROUP_CONCAT()
, trong CONCAT()
bên ngoài .
Cũng xin lưu ý rằng bạn không cần CONCAT()
trong vòng GROUP_CONCAT()
:MySQL thực hiện điều đó theo mặc định.