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`
इस ट्रिक के काम करने का तरीका यह है कि एक्सप्रेशन country = 'total'
1 (सत्य) का मूल्यांकन करता है यदि country
कॉलम 'total'
. के बराबर है , और 0 (गलत) अन्यथा। आरोही संख्यात्मक क्रम में, 0 के बाद 1 आता है। इस प्रकार, उस व्यंजक द्वारा छँटाई किसी भी पंक्ति को बाध्य करती है जहाँ country
कॉलम 'total'
. के बराबर है किसी अन्य कॉलम के बाद सॉर्ट करने के लिए।
इसी तरह, व्यंजकों द्वारा क्रमबद्ध करना region = 'total'
value
. से पहले 'total'
. मान वाली किसी भी पंक्ति को बाध्य करता है उनके region
. में समान country
. के साथ किसी अन्य पंक्ति के बाद सॉर्ट करने के लिए , उनके value
. की परवाह किए बिना स्तंभ।
यही ट्रिक दूसरे तुलना ऑपरेटरों
के साथ भी काम करती है। बहुत। उदाहरण के लिए, यदि आप नकारात्मक मानों को सकारात्मक मानों के बाद क्रमबद्ध करने के लिए बाध्य करना चाहते हैं, तो आप पंक्तियों को `value` < 0, `value`
द्वारा क्रमबद्ध कर सकते हैं ।