把那一列搜出来,得到数组,然后再判断function maxSerial($arr){
$max = 0;
$serial = 0;
$count = sizeof($arr); for($i =0; $i < $count; ++$i){
if($arr[$i] == 1)
++$serial;
else if($serial > $max){
$max = $serial;
$serial = 0;
}
}

return $serial > $max ? $serial : $max;
}

解决方案 »

  1.   

    貌似sql语句不能搞定,还是查出来php判断吧$link = mysql_connect('localhost','root','123456'); 
    if (!$link) { 
    die('Could not connect to MySQL: ' . mysql_error()); 
    } mysql_select_db("test");
    mysql_query("SET NAMES utf8");
    $sql="SELECT count(f1) as count,group_concat(id) as ids FROM test WHERE f1=1 group by f1";$res=mysql_query($sql,$link);
    while($row=mysql_fetch_row($res)){
    $data=$row;
    }$ids=explode(',',$data[1]);
    sort($ids);
    $id=$f=0;
    foreach($ids as $k=>$v){
    if($id==$v){
    $tmp[]=$v;
    $id++;
    $f++;
    }else{
    $tmp=array();
    $tmp[]=$v;
    $f=0;
    $id=++$v;
    $f++;
    }
    if($f>=4){
    break;
    }
    }if($f>=4){
    echo '连续出现4次,它们的id是:';
    echo "<pre>";
    print_r($tmp);
    echo "</pre>";
    }else{
    echo '没有连续出现4次';
    }mysql_close($link); sql数据
      

  2.   

    借用楼上的表
    select f1 form test
    得到一个数组,然后调用maxSerial楼上把一件简单的事情做得这么复杂。
      

  3.   

    我主要想知道sql语句是否能实现?现在看来还是老老实实循环处理吧。另外我的重复是指,一个数字在挨着的两行里面出现就算的,第一行里面出现,第二行里面出现就算重复了,位置在第几个都可以的。
      

  4.   

    1、提问时要表述清楚
    2、sql不是万能的。