我有这些疑问:
(SELECT * FROM product WHERE var<>'0'ORDER BY date DESC)
Run Code Online (Sandbox Code Playgroud)
和
(SELECT * FROM product WHERE var='0' ORDER BY date DESC).
Run Code Online (Sandbox Code Playgroud)
当我试图将两者的结果合二为一时
(SELECT * FROM product WHERE var<>'0'ORDER BY date DESC)
UNION
(SELECT * FROM product WHERE var='0' ORDER BY date DESC)
Run Code Online (Sandbox Code Playgroud)
结果失去了顺序...结果集首先记录了var不为零的所有记录,然后所有记录的变量为零但是它们没有按日期排序......奇怪的是订单正在运行......为什么?我尝试使用一个唯一的顺序,但结果混合了var等于或不等于零的记录...
您必须最后申请该订单:
SELECT * FROM product WHERE var<>'0'
UNION
SELECT * FROM product WHERE var='0'
ORDER BY date DESC
Run Code Online (Sandbox Code Playgroud)
编辑,如果您想要保留两个部分中的顺序,所以首先使用var<>'0'
(内部排序date DESC
)然后全部使用var='0'
(内部排序date DESC
):
SELECT * FROM product WHERE var<>'0'
UNION
SELECT * FROM product WHERE var='0'
ORDER BY
CASE WHEN var<>'0' THEN 0 ELSE 1 END ASC,
date DESC
Run Code Online (Sandbox Code Playgroud)