MySQL按年分页获取数据

时间:2018-12-21 08:55:14

标签: php mysql laravel

我需要获取基于分页年份的数据,如果行数较少,则在明年搜索

.a ::ng-deep p {
  color: green !important;
}

如果行数少于10,则在2018年之前进行搜索

4 个答案:

答案 0 :(得分:1)

鉴于您的结果按created_at DESC排序,我根本不需要WHERE子句。如果2019年的结果不足,查询将自动返回2018年,2017年,2016年等的结果,以获取10行:

SELECT * 
FROM `user_notifications` 
ORDER BY `created_at` DESC
LIMIT 10

答案 1 :(得分:0)

我认为您只需要一个WHERE子句,即可同时包含2018年和2019年:

SELECT *
FROM user_notifications
WHERE YEAR(created_at) IN (2018, 2019)
ORDER BY created_at DESC
LIMIT 10;

答案 2 :(得分:0)

如果我没看错的话,这听起来像是简单的订购练习

  SELECT *
    FROM user_notifications
   WHERE created_at < :input_year + INTERVAL 1 YEAR
ORDER BY created_at DESC
   LIMIT :offset, 10;

如果您只想回溯一年,您可以添加另一个条件

  SELECT *
    FROM user_notifications
   WHERE created_at < :input_year + INTERVAL 1 YEAR
     AND created_at >= :input_year - INTERVAL 1 YEAR
ORDER BY created_at DESC
   LIMIT :offset, 10;

不是在YEAR()上使用类似created_at的函数而不是比较(<,> =)会阻止引擎在created_at上使用索引

答案 3 :(得分:0)

使用https://dev.mysql.com/doc/refman/8.0/en/year.html

SELECT *
FROM user_notifications
WHERE YEAR(created_at) <= $searchYear
ORDER BY created_at DESC
LIMIT 0, 10;