繁体   English   中英

MYSQL Union Query 按第二个内部查询排序

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM