我想从无限行的sql获取结果,我不想在我的sql语句中使用limit
因为我需要知道总行数。但我只想echo
,例如第30-60行。
我使用php。
答案 0 :(得分:4)
首先,运行此声明:
SELECT SQL_CALC_FOUND_ROWS
*
FROM mytable
ORDER BY
mycol
LIMIT 30, 30
,获取行并将它们保存到数组中。
在此之后,运行以下声明:
SELECT FOUND_ROWS()
,它将显示前一个语句返回的行总数,如果没有LIMIT
子句。
答案 1 :(得分:1)
http://php.net/manual/en/function.mysql-data-seek.php
mysql_data_seek()
将与指定结果标识符关联的MySQL结果的内部行指针移动到指向指定的行号。下一次调用MySQL获取函数(例如mysql_fetch_assoc()
)将返回该行。
mysql_data_seek($res, 30);
for ($i = 0; $i < 30; ++$i) {
$row = mysql_fetch_assoc($res);
var_dump($row);
}
答案 2 :(得分:0)
$query=mysql_query("SELECT....");
$array=array();
while($row=mysql_fetch_row($query)){
$array[]=$row;
}
现在你有了包含所有行的$ array数组。如果您只想打印30到60之间的行,请使用:
for($i=30;$i<60;$i++) echo $array[$i][0];
答案 3 :(得分:0)
我相信Quassnoi意味着:
SELECT SQL_CALC_FOUND_ROWS * FROM accounts ORDER BY accountID LIMIT 30
然后运行此select语句以查找行数:
select found_rows();
当然,你不应该使用*来进行任何查询,因为它会影响性能。使用所需列的名称。我认为这是最好的方式,因为它是最有效的。如果您只需要一个计数和30行,则无需返回整个表格。