Gebaseerd op de originele versie van Johans antwoord :
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`
De manier waarop deze truc werkt, is dat de uitdrukking country = 'total' evalueert tot 1 (true) als het country kolom is gelijk aan 'total' , en anders naar 0 (false). In oplopende numerieke volgorde komt 1 na 0. Sorteren op die uitdrukking dwingt dus alle rijen af waar het country kolom is gelijk aan 'total' om te sorteren na andere kolommen.
Evenzo sorteren op de uitdrukkingen region = 'total' voor value forceert alle rijen met de waarde 'total' in hun region om te sorteren op andere rijen met hetzelfde country , ongeacht hun value kolom.
Dezelfde truc werkt met andere vergelijkingsoperators
te. Als u bijvoorbeeld wilt dat negatieve waarden worden gesorteerd op positieve waarden, kunt u de rijen sorteren op `value` < 0, `value` .