我有一个表,我想按创建日期按降序排序,但也有一个固定列,如果这是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转换为1月1日3000,因为如果我使用值2,那么固定的行就不在正确的位置。
我的问题是:3比2020-06-22 08:59:09大多少?有没有更好的方法来形成这个查询?
额外问题:是否有一种方法可以确保固定行也按创建日期\u相对于所有其他固定行降序排序?与前两个问题相比,这对于成为最佳答案并不那么重要。
1条答案
按热度按时间pxiryf3j1#
基本上你是对的,但原因恰恰相反。这只是一个简单的字符串比较:
作为另一种选择,考虑
ORDER BY pinned = 1 DESC, date