To naprawdę proste:użyj UNION ALL
zamiast UNION
.
SELECT * FROM (
SELECT name,total,rate
FROM business b
WHERE rate > 100
ORDER BY total DESC) x
UNION ALL
SELECT * FROM (
SELECT name,total,rate
FROM business b
WHERE rate <= 100
ORDER BY rate ASC) y
UNION ALL zachowuje porządek zgodnie z kodem.
UNION usuwa duplikaty i nie gwarantuje porządku. Większość baz danych faktycznie sortuje dane wyjściowe (aby ułatwić wykrywanie duplikatów).