Порядок записей после UNION
не определен, если у вас нет внешнего предложения ORDER BY
. У вас есть несколько вариантов, вот простой:
SELECT ID, CatName FROM (
(SELECT 99 AS ID, 'All Categories' AS CatName, 1 AS TableOrder)
UNION
(
SELECT ID, CatName, 2 AS TableOrder
FROM prodcattypes as t2
WHERE VendorTypeID = 2
ORDER BY t2.CatName
)
) OrderedCategories
ORDER BY TableOrder ASC, CatName ASC
Идея состоит в том, чтобы назначить фиксированный «ранг» для записей из обеих частей UNION
и использовать его для упорядочения результатов.