【发布时间】:2021-10-01 04:45:38
【问题描述】:
我正在构建一个自定义新闻提要组件并尝试实现突出显示帖子的概念。表格示例如下:
| id | title | content | post_date | highlight_date |
|---|---|---|---|---|
| 1 | Test 1 | ... | 2021-10-01 06:12:00 |
null |
| 2 | Test 2 | ... | 2021-10-02 08:54:00 |
null |
| 3 | Test 3 | ... | 2021-10-03 13:52:00 |
2021-11-30 00:00:00 |
| 4 | Test 4 | ... | 2021-10-04 15:32:00 |
null |
当然,在提取数据时,我会按post_date DESC 排序,但是突出显示的帖子需要出现在顶部,但只有当今天的日期早于突出显示的日期时。如果今天的日期在突出显示的日期之后,它应该被忽略并自然地出现在post_date 排序中。
例如,下面的这个查询将不起作用,因为突出显示的帖子将始终首先出现,即使在 highlight_date 失效之后也是如此。
select * from post
order by post_date desc, highlight_date asc
limit 20
虽然我可以将它分成两个查询(一个只用于突出显示,一个只用于常规),并在应用程序中复合这两个查询,但现在实现它以用于分页/无限滚动将很困难,因为我没有在我的查询中使用LIMIT 和OFFSET 的好处。
使用上面的示例数据,我正在尝试构建一个查询,其中生成的订单对于 2021 年 11 月 31 日之前的日期为 [3, 4, 2, 1],但对于之后的日期为 [4, 3, 2, 1]。
我不确定如何以有效的方式解决这个问题,因为我预计这张表会随着时间的推移而增长。任何方向或帮助将不胜感激!蒂亚!
【问题讨论】:
-
嗨 SteppingHat,没有日期:
2021-11-31 00:00:00; 11 月有 30 天 -
@sukalogika 哈哈很好:P 我没有从任何地方复制粘贴数据,我只是在输入问题时编造了一些垃圾;)
-
在我知道这个事实之前,我以为你在 db 中插入了无效数据
2021-11-31 00:00:00并导致0000-00-00 00:00:00:)