Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách sắp xếp truy vấn MySQL này

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.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiệu suất của truy vấn trên cột Boolean được lập chỉ mục so với cột Ngày giờ

  2. Làm thế nào để bạn sử dụng mệnh đề MySql IN

  3. Đặt hàng kết quả dựa trên dữ liệu mệnh đề WHERE IN

  4. SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo không thành công:tên nút hoặc tên dịch vụ được cung cấp hoặc không được biết

  5. MySQL:Cách nhận các thay đổi của CẬP NHẬT lần trước