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

Sắp xếp sau khi cuộn lên bảo toàn vị trí hàng tổng và tổng phụ

Dựa trên phiên bản gốc của Câu trả lời của Johan :

SELECT *
FROM (
  SELECT 
    COALESCE(country, 'total') AS country,
    COALESCE(region, 'total' ) AS region,
    SUM(`value`) as `value`, 
  FROM `table` 
  GROUP BY country, region WITH ROLLUP
) t
ORDER BY country = 'total', country, region = 'total', `value`

Cách thức hoạt động của thủ thuật này là biểu thức country = 'total' đánh giá là 1 (true) nếu country cột bằng 'total' , và thành 0 (false) nếu không. Theo thứ tự số tăng dần, 1 đứng sau 0. Do đó, việc sắp xếp theo biểu thức đó buộc bất kỳ hàng nào có country cột bằng 'total' để sắp xếp sau bất kỳ cột nào khác.

Tương tự, sắp xếp theo các biểu thức region = 'total' trước giá trị value buộc bất kỳ hàng nào có giá trị 'total' trong region của họ để sắp xếp sau bất kỳ hàng nào khác có cùng country , bất kể giá trị value của chúng là bao nhiêu cột.

Thủ thuật tương tự cũng hoạt động với toán tử so sánh khác quá. Ví dụ:nếu bạn muốn buộc các giá trị âm sắp xếp sau các giá trị dương, bạn có thể sắp xếp các hàng theo `value` < 0, `value` .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi ngày giờ của MySQL thành dấu thời gian

  2. swing lấy dữ liệu từ mysql db sang textfield

  3. Lưu trữ các thực thể tương tự trong cùng một bảng so với nhiều bảng trong cơ sở dữ liệu

  4. Sử dụng PHP và RegEx để tìm nạp tất cả các giá trị tùy chọn từ mã nguồn của trang web

  5. PHP SQL:Cách lưu dữ liệu vào nhiều cơ sở dữ liệu từ một dạng html HOẶC cách sao chép dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác một cách tự động