小编典典

MYSQL联盟订购

sql

是否可以对第一个查询进行排序并保留返回的行作为第一行,而不对第二个查询进行排序。(如果有道理)

我当前查询的一个示例是:

SELECT
    *
FROM 
    Devices
WHERE
    Live = 'true'
    AND Category = 'apple'
ORDER BY
    ListOrder
UNION
SELECT
        *
    FROM
        Devices
    WHERE
        DeviceLive = 'true'

我希望“苹果”类别下的设备将按照该列表的顺序进行组织,并位于其他设备上方的列表顶部。但这似乎使两个查询混杂在一起。


阅读 217

收藏
2021-03-23

共1个答案

小编典典

您需要引入一个人工排序键。就像是:

SELECT
    *, 1 as SortKey
FROM 
    Devices
WHERE
    Live = 'true'
    AND Category = 'apple'
UNION
SELECT
        *, 2 as SortKey
    FROM
        Devices
    WHERE
        DeviceLive = 'true'
ORDER BY SortKey, ListOrder
2021-03-23