按日期说明说明问题

Sas*_*vus 1 sql union date

我有这些疑问:

(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等于或不等于零的记录...

Tim*_*ter 5

您必须最后申请该订单:

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)