我需要获取基于分页年份的数据,如果行数较少,则在明年搜索
.a ::ng-deep p {
color: green !important;
}
如果行数少于10,则在2018年之前进行搜索
答案 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;