[英]MYSQL Union Query Order by second inner query
我需要从表中提取类别,因此我使用联合查询添加第一行“所有类别”,然后在第二个查询中我尝试按类别名称排序,但它没有对第二个查询进行排序。 我似乎无法弄清楚,请帮助:
(SELECT 99, 'All Categories' as t1)
union
(SELECT ID, CatName FROM prodcattypes as t2 WHERE VendorTypeID = 2 order by t2.CatName)
如果您没有外部ORDER BY
子句,则UNION
之后的记录顺序未定义。 你有几个选择,这里有一个简单的选择:
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
的两个部分的记录分配一个固定的“等级”,并使用它来对结果进行排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.