获取mysql中的最新行

时间:2015-04-20 08:17:56

标签: php mysql sorting

我正在为我的php应用程序编写一些新闻部分,我想为用户编写一个函数,以便能够获取最新的10条新闻,以及稍后当用户要求查看更多新闻时该函数从10返回最新消息到20等等。 考虑我的桌子是这样的

+++++News_table++++++++
+news_ID
+news_title
+news_desc
+date_modified
++++++++++++++++++++++

我搜索过MySQL查询,但我只找到了这个

SELECT new_title , news_desc FROM News_table order by date_modified DESC limit 10 ;

但是这个查询只返回前10个项目,如果我想以相同的方式获得下一个10个新闻(新闻11到20),它就已经过时了。 我应该怎么写我的查询?

5 个答案:

答案 0 :(得分:2)

请参阅offset

SELECT new_title , news_desc FROM News_table order by date_modified DESC limit 0, 10; // 1 - 10
SELECT new_title , news_desc FROM News_table order by date_modified DESC limit 10, 10; // 11 - 20

如果我希望PHP $_GET['page']变量通过页面,值为1,2等,则查询将为:

SELECT new_title , news_desc FROM News_table order by date_modified DESC limit ((int)$_GET['page'] - 1) * 10, 10; 

OR

$page = isset($_GET['page']) ? ($_GET['page'] - 1) * 10 : 0;

SELECT new_title , news_desc FROM News_table order by date_modified DESC limit $page, 10;

答案 1 :(得分:1)

Limit也接受两个参数:

SELECT new_title , news_desc FROM News_table order by date_modified DESC limit 10, 10;
//starts from 11th and return 10 following rows

也可以在DESC中使用DEC,而不是order by

答案 2 :(得分:0)

来自fine manual

LIMIT子句可用于约束SELECT语句返回的行数。 LIMIT需要一个或两个数字参数,它们都必须是非负整数常量(使用预准备语句时除外)。

使用两个参数,第一个参数指定要返回的第一行的偏移量,第二个参数指定要返回的最大行数。初始行的偏移量为0(不是1):

SELECT * FROM tbl LIMIT 5,10; #检索行6-15

答案 3 :(得分:0)

限制10,10表示从10到下10记录得到结果。阅读手册limit

 SELECT new_title , news_desc FROM News_table order by date_modified DESC limit 10, 10

答案 4 :(得分:0)

每次用户选择第2页

SELECT new_title , news_desc FROM News_table order by date_modified DEC limit 0, 10;

然后

SELECT new_title , news_desc FROM News_table order by date_modified DEC limit 11, 20;

等等