Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何获取MySQL中的每n行?_Php_Mysql_Mysqli - Fatal编程技术网

Php 如何获取MySQL中的每n行?

Php 如何获取MySQL中的每n行?,php,mysql,mysqli,Php,Mysql,Mysqli,我有一个表,其中包含每分钟记录的数据,因此每分钟有一行。当返回数据进行处理时,在过去6小时内需要此精度,但在这之后,较低的精度就足够了,例如每5分钟一次 我可以将所有数据返回到一个数组中,然后删除除第5个元素以外的所有元素,但这需要所有数据由MySQL返回,然后首先读取到数组中——相当多的数据 如何在MySQL中每第n行返回一次?我读过一篇博客文章,其中建议使用primaryKey%5=0,其中primaryKey是自动递增的,但是 a) 不使用索引 b) 将只返回可被5整除的primaryKe

我有一个表,其中包含每分钟记录的数据,因此每分钟有一行。当返回数据进行处理时,在过去6小时内需要此精度,但在这之后,较低的精度就足够了,例如每5分钟一次

我可以将所有数据返回到一个数组中,然后删除除第5个元素以外的所有元素,但这需要所有数据由MySQL返回,然后首先读取到数组中——相当多的数据

如何在MySQL中每第n行返回一次?我读过一篇博客文章,其中建议使用primaryKey%5=0,其中primaryKey是自动递增的,但是

a) 不使用索引 b) 将只返回可被5整除的primaryKey值,在删除的情况下,实际上可能不是每5行返回一次

这可以在SQL查询中完成,还是需要使用游标逐行循环结果集


我正在用PHP连接数据库。

完全未经测试,但这可能有效

SELECT Row, col_a 
FROM (SELECT @row := @row + 1 AS Row, col1 AS col_a FROM table1) As derived1 
WHERE Row%5 = 0; 

每5分钟的时间戳列表:

SELECT
  MIN(logtimestamp) AS first_of_five_minutes
FROM tLog
GROUP BY
  DATE(logtimestamp),
  HOUR(logtimestamp),
  MINUTE(logtimestamp) - (MINUTE(logtimestamp) % 5)
现在,您可以使用它作为子选择,通过将
logtimestamps
连接到上的
first\u of五分钟
来获取请求的日志条目。当然,额外的
WHERE
-子句必须在内部和外部复制,以便获得“正确”的时间戳


另外,请注意,这会在每五分钟的间隔内返回第一个时间戳,而直接使用
minutes%5=0
的解决方案只返回实际为:05倍数的日志项,如果记录日志或类似内容有延迟,则可能会失败。

它是否返回没有where子句的任何内容?很抱歉,我目前无法访问mysql,因此无法在我的末尾对其进行测试:(它返回每一行,但没有WHEREThat似乎不起作用-它只是列出了所有行。但是,我将其改编为此,它确实起作用-从表WHERE MINUTE(logtimestamp)中选择logtimestamp)%5=0注意:我将时间值存储为Unix时间戳,因此需要使用FROM_UNIXTIME。我集成了部分注释。