Просто добавьте буквальное значение к каждому, а затем упорядочите его.
SELECT *
FROM ((SELECT deal.dealid,
deal.titleen,
deal.capnum,
deal.imagelink,
SUM(buy.quantity) AS quantity,
'A' sortby
FROM buy,
deal
WHERE buy.dealid = deal.dealid
AND buy.isfinalbuy = '1'
GROUP BY buy.dealid
HAVING quantity = deal.capnum)
UNION
(SELECT deal.dealid,
deal.titleen,
deal.capnum,
deal.imagelink,
NULL AS quantity,
'B' sortby
FROM deal
WHERE deal.enddate < Curdate()))a
ORDER BY dealid,
sortby,
titleen,
capnum,
imagelink,
quantity ASC