简体   繁体   English

MySQL查询简单分页

[英]MySQL query simple pagination

here's my data scructure: 这是我的数据结构:

news
id  date         name
----------------------
2   2015-12-01   news1
3   2015-12-04   news2 
4   2015-12-07   news3 
7   2015-12-08   news4 

i'm displaying the latest news record (id 7) and want to add navigation buttons for "older" and "newer" 我正在显示最新的新闻记录(id 7),并想为“较旧”和“较新”添加导航按钮

so what's the best method for getting the url for the next older news record (id 4)? 那么获取下一个较旧新闻记录的URL的最佳方法是什么(ID 4)? something like select * from news where [date which is next lower id to current id] 类似于select * from news where [date which is next lower id to current id]

thanks 谢谢

Query for "newer": 查询“较新”:

select * from news where date > (select date from news where id = X) order by date asc limit 1;

Query for "older": 查询“较旧”:

select * from news where date < (select date from news where id = X) order by date desc limit 1;

Replace X with your target id. 将X替换为您的目标ID。 I assume the "id" is unique. 我认为“ id”是唯一的。

Tested on MySQL 5.5. 在MySQL 5.5上测试。

You can use limit with range: The first argument is the offset, the second is how many items two return This will give you the first two records: 您可以将limit与range一起使用:第一个参数是偏移量,第二个参数是两个返回的项目数,这将为您提供前两个记录:

Select * from news order by id limit 0,2

And this the fillowing two: 这有两个:

Select * from news order by id limit 2,2

you can use below code parameter_date is date of record 7 in this example 您可以在以下示例中使用以下代码parameter_date是记录7的日期

//for newer : 
 SELECT * FROM news where date>parameter_date order by date asc limit 1,1;
//for older : 
  SELECT * FROM news where date<parameter_date order by date desc limit 1,1;

and if you want do this with id you can use below code parameter_id is your news id 如果您想使用ID执行此操作,则可以在下面的代码中使用parameter_id是您的新闻ID

//for newer : 
 SELECT * FROM news where date>(select date from news where id=parameter_id) order by date asc limit 1,1;
//for older : 
  SELECT * FROM news where date<(select date from news where id=parameter_id) order by date desc limit 1,1;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM