我想只返回表格中的最后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'
。
然而,我不确定这是最有效的方法(可能不是),所以如果没有,我真的很感激一些减少我必须使用的代码量的建议:)! !
答案 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;