MYSQL Порядок запросов по второму внутреннему запросу - PullRequest
0 голосов
/ 08 апреля 2020

Мне нужно извлечь категории из таблицы, поэтому я использую запрос объединения, чтобы добавить первую строку «Все категории», а затем во втором запросе я пытаюсь отсортировать по имени категории, но это не сортировка 2-го запроса. Я не могу понять это, пожалуйста, помогите:

(SELECT 99, 'All Categories' as t1)  
union
(SELECT ID, CatName FROM prodcattypes as t2 WHERE VendorTypeID = 2 order by t2.CatName) 

1 Ответ

0 голосов
/ 08 апреля 2020

Порядок записей после 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 и использовать его для упорядочения результатов.

...