如何获取表中的最后15行,然后是之前的15行?

时间:2011-08-30 23:59:37

标签: php mysql

我想只返回表格中的最后15行,然后是之前的15行。

不幸的是,查询为while($rows = mysql_fetch_assoc($result))的{​​{1}}会返回所有行中的数据。

我考虑过做类似的事情:

在我的插入脚本中

在插入任何数据之前

SELECT * FROM table然后SELECT * FROM table,然后添加名为$selection_id = mysql_num_rows($result)-14的列,其中包含selection_id,因此每组15行将具有相同的{{1} }}

在我的选择脚本中

$selection_id然后selection_id然后SELECT * FROM table$num_rows = mysql_num_rows($result)/15

然后,我可以像往常一样对两个结果执行SELECT * FROM table WHERE selection_id='$num_rows'

然而,我不确定这是最有效的方法(可能不是),所以如果没有,我真的很感激一些减少我必须使用的代码量的建议:)! !

3 个答案:

答案 0 :(得分:3)

在查询中使用LIMIT子句,按自动递增主键的顺序排序。 E.g。

SELECT * FROM `table` ORDER BY `selection_id` DESC LIMIT 0,15

...将获得最后15行,并且:

SELECT * FROM `table` ORDER BY `selection_id` DESC LIMIT 15,15

...之前将获得15行。

答案 1 :(得分:3)

选择最后15行:

SELECT *
    FROM `table`
    ORDER BY `id` DESC
    LIMIT 0,15

选择前一行之前的15行:

SELECT *
    FROM `table`
    ORDER BY `id` DESC
    LIMIT 15,15

你可以在一段时间内继续。

答案 2 :(得分:1)

您需要查看mysql LIMIT。要获得 last 15,您需要知道总行数。

$offset=$rowcount-15;
$sql="SELECT * FROM mytable LIMIT $offset,15";

这只是例如,你想确保至少有15行,我不确定mysql如何处理负偏移。我会告诉你如何计算行数。

修改:

哦,哈哈,你也可以按顺序排序,这样可以省去你两次查询。

SELECT * FROM mytable ORDER BY id DESC LIMIT 15;