按时间戳desc排序,但先放0

Mbr*_*r88 2 mysql

我有一个表"test"与这些列:id,name,timestamp

我做了这个查询:

SELECT * FROM test ORDER BY timestamp DESC
Run Code Online (Sandbox Code Playgroud)

这会将最新记录作为查询的第一个结果.但是,有些时间戳填充"0",我想把它们放在其余的前面.

如果我通过时间戳ASC订购,那么整个结果将被反转.我只想先将timestamp = 0,其余结果降序.

怎么做?

Gor*_*off 7

通过order by子句中的其他比较执行此操作:

SELECT *
FROM test 
ORDER BY (timestamp = 0) desc,
         timestamp DESC;
Run Code Online (Sandbox Code Playgroud)

在MySQL中,布尔结果(例如for timestamp = 0)被视为0false和1when时.这使它可用于许多目的,包括这样的目的order by.