从数据库中获取下一个表行的特定列元素


get a particular column element of the next table row from database

我有一个查询,它从tableA中选择userid,messageid,statusid,如下所示。

$qry = mssql_query('select userid,messageid,statusid from tableA');
if(mssql_num_rows($qry))
{
   $data = mssql_fetch_array($qry)
   {
     //if(current_status_id column value != next_status_id column value)
     $status = $data['statusid'];
   }
}

我需要将当前statusid列的值与紧挨着的下一行statusid列的值进行比较,比如if(current_status_id column value != next_status_id column value)。这可能吗。请帮我

$qry = mssql_query('select userid,messageid,statusid from tableA order by statusid');
while (($row=mssql_fetch_array($qry) !== FALSE) {
    if (isset($previous) && $previous['statusid'] !== $row['statusid']) {
        // do what you gotta do here
    }
    $previous = $row;
}

我将order by statusid添加到您的SQL中,这样您就可以获得一组有序的数据。上面的代码不是试图"向前看"下一行,而是"向后看"上一行。。。这实际上是相同的。您已经获得了$previous$row中两行的数据,因此您应该能够对$previous执行您想要执行的操作。

我创建了一个数组,并将结果分配给它。然后我使用while循环,检查当前元素是否等于下一个元素。

$i=1;
while (($row = mssql_fetch_array($qry, MYSQL_ASSOC)) !== false)
{
     $data_array[] = $row; // add the row in to the results (data) array
} 
mssql_data_seek( $qry, 0 );
while($msgDetailChilds = mssql_fetch_array($qry)){ 
   if($data_array[$i]['groupid']!=$data_array[$i-1]['groupid'])
   {
      //do stuff
   }

}