我在mysql中有以下结果;它只有两列:date
和x
。 date
是时间戳记,x
是0
或1
。
date | x :--------- | -: 2020-02-13 | 1 2020-02-13 | 0 2020-02-01 | 1 2020-02-11 | 0 2020-02-11 | 1 2020-02-11 | 0 2020-02-12 | 1 2020-02-13 | 0
我希望这些结果排序如下... 如果列x等于1,则将这些结果放在表的顶部,并按从最旧到最新的日期排序。 如果x列等于0,则将这些结果放在表格底部,并按从最新到最早的日期排序。
我接近以下代码:
ORDER BY CASE WHEN x = '1' THEN 0 ELSE date END ASC
第x
列已正确排序,但日期与上面指定的不一致。
还可以使用mysql。
答案 0 :(得分:1)
尝试一下 它首先按X排序,然后按日期x = 1升序排序,并且X = 0降序
SELECT
`date`, `x`
FROM table1
order by
x DESC,case when x = 1 then date end,
date desc
答案 1 :(得分:1)
考虑:
order by
x desc,
case when x = 1 then date end,
date desc
date | x :--------- | -: 2020-02-01 | 1 2020-02-11 | 1 2020-02-12 | 1 2020-02-13 | 1 2020-02-13 | 0 2020-02-13 | 0 2020-02-11 | 0 2020-02-11 | 0