是否可以订购第一个查询并保留返回的行作为第一个,而不是命令第二个查询.(如果那样的话)
我目前的调查的一个例子是:
SELECT
*
FROM
Devices
WHERE
Live = 'true'
AND Category = 'apple'
ORDER BY
ListOrder
UNION
SELECT
*
FROM
Devices
WHERE
DeviceLive = 'true'
Run Code Online (Sandbox Code Playgroud)
我希望apple类别下的设备可以按照列表顺序进行组织,并且位于其他设备上方列表的顶部.但这似乎将两个问题混杂在一起.
Joe*_*lli 16
你需要引入一个人工排序键.就像是:
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
Run Code Online (Sandbox Code Playgroud)
UNION具有隐式的重复数据删除功能.这意味着使用它的副作用是一切都混杂在一起,因为它的排序将发生.它(通常,但不总是)意味着您获得排序输出(参见下一段).
UNION ALL删除它,但是,仍然有一点需要注意,没有显式的查询输出order by没有保证排序.这已被另一个答案所涵盖,但我认为值得指出其重要性.
| 归档时间: |
|
| 查看次数: |
5124 次 |
| 最近记录: |