【发布时间】:2020-06-22 15:56:03
【问题描述】:
我有一个表,我想按 date_created 降序排序,但还有一个固定列,如果它是 1,则无论日期如何,该行都应该位于顶部。我提出的确实有效的查询如下:
SELECT * FROM my_table
WHERE id = SOMEID
ORDER BY (CASE WHEN pinned = 1 THEN 3 ELSE date_created END) DESC;
我想知道为什么 mysql 认为数字 3 大于 2020 年的所有这些日期。我目前的理论是 mysql 将 3 转换为 3000 年 1 月 1 日的日期,因为如果我使用值 2那么固定的行不在正确的位置。
然后我的问题是:3 比 2020-06-22 08:59:09 大多少,有没有更好的方法来形成这个查询?
额外的问题:有没有一种方法可以确保固定的行也按 date_created 相对于所有其他固定行的降序排序?这对于成为最佳答案而言不如前两个问题重要。
【问题讨论】:
标签: mysql sql database sql-order-by