Php 保存MySQL查询的每N条记录,同时保持递减限制

Php 保存MySQL查询的每N条记录,同时保持递减限制,php,mysql,Php,Mysql,有没有一种方法可以在保持递减限制的同时返回MySQL请求的每N条记录?否则,是否可以只将每个第n个请求保存到我的PHP数组中?这些数据最终会通过javascript向谷歌图表提供数据,显然10080条记录并不能创建一个平滑的图表 $myquery = "SELECT * FROM ( SELECT @row := @row +1 AS rownum, dateTime, outTemp, dewpoint FROM ( SELECT @ro

有没有一种方法可以在保持递减限制的同时返回MySQL请求的每N条记录?否则,是否可以只将每个第n个请求保存到我的PHP数组中?这些数据最终会通过javascript向谷歌图表提供数据,显然10080条记录并不能创建一个平滑的图表

$myquery = "SELECT * 
FROM ( 
    SELECT 
        @row := @row +1 AS rownum, dateTime, outTemp, dewpoint
    FROM ( 
        SELECT @row :=0) r, archive 
    ) ranked 
    WHERE rownum % 5 = 1";

$query = mysql_query($myquery);

 if ( ! $query ) 
 {
        echo mysql_error();
        die;
}

$table=array();
$table['cols'] = array(
    // Chart Labels (i.e. column headers)
    array('label' => 'dateTime', 'type' => 'number'),
    array('label' => 'Temp', 'type' => 'number'),
    array('label' => 'Dew', 'type' => 'number')
);

$rows = array();

while($r = mysql_fetch_assoc($query))
{
    $temp = array();
    $temp[] = array('v' => (int) $r['dateTime']); 
    $temp[] = array('v' => (int) $r['outTemp']);
    $temp[] = array('v' => (int) $r['dewpoint']);
    $rows[] = array('c' => $temp);
}

$table['rows'] = $rows;
$jsonTable = json_encode($table);
更新:


我可以使用上的说明选择每N行,但这并不能解决如何保留递减过滤器的问题。我尝试使用类似于使用
DESC LIMIT 10

的方式选择数据集的最后x行。我通过获取行数并根据行数N(本例中为间隔)和所需数据范围设置限制来解决此问题。此解决方案将数据按降序排列,在限制范围内,同时保持数据本身在Google图表绘图中的正确顺序

SELECT @row_number := NULL;
SELECT
    @row_number := IFNULL(@row_number, 0) + 1 AS row_number,
    Column1,
    Column2,
    ColumnN
FROM the_table
WHERE @row_number % 2 = 0
ORDER BY Column1
// Get a row count ... ... ...
$count = mysql_query("select count(1) FROM archive");
$grabCount = mysql_fetch_array($count);

 if ( ! $count ) 
 {
        echo mysql_error();
        die;
}




// ROW BOUNDARIES  ... ... ...
$hour = 60;
$day = 1440;
$week = 10080;
$month = 43200;
$year = 525600;

$timeSpan = $day;
$interval = 30;

$filter = $timeSpan / $interval;
$rows = (int) ($grabCount[0] / $interval);

$rowStart = ($rows - $filter);
$rowEnd = $rows;


// Query the Database for what you want
$myquery = "SELECT * 
FROM ( 
    SELECT 
        @row := @row +1 AS rownum, dateTime, outTemp, dewpoint
    FROM ( 
        SELECT @row :=0) r, archive 
    ) ranked 
WHERE rownum % $interval = 1 LIMIT $rowStart,$rowEnd";

停止使用mysql函数,因为它们已经被弃用了:说真的,你为什么不谷歌一下呢?google上的第一个结果-与DESC LIMIT一起使用时,从SQL server返回一个错误