请问高手这样的要求如何实现?

mysql数据库里面有这样的数据:
1 3 5 7 9
1 2 4 6 8
1 2 4 6 10
2 3 4 5 6
3 7 8 9 10
1 2 3 4 5
1 3 4 5 6
1 5 6 7 8
1 8 7 6 5
。。。。
怎么得出结论1连续出现的次数是4?
...全文
268 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 5 楼 anyilaoliu 的回复:
表设计上下功夫更容易些 如果可以在插入每一条记录的时候 都有一个字段专门记录连续重复次数就好了
因为这只是一个临时的要求,所以没有在每次插入记录的时候统计。
luojxun 2015-01-01
  • 打赏
  • 举报
回复
3、如果你一定想使用数据库解决这问题,可以使用存储过程。
luojxun 2014-12-31
  • 打赏
  • 举报
回复
引用 4 楼 zhiqiu 的回复:
我主要想知道sql语句是否能实现?现在看来还是老老实实循环处理吧。 另外我的重复是指,一个数字在挨着的两行里面出现就算的,第一行里面出现,第二行里面出现就算重复了,位置在第几个都可以的。
1、提问时要表述清楚 2、sql不是万能的。
再看我一眼 2014-12-31
  • 打赏
  • 举报
回复
表设计上下功夫更容易些 如果可以在插入每一条记录的时候 都有一个字段专门记录连续重复次数就好了
  • 打赏
  • 举报
回复
我主要想知道sql语句是否能实现?现在看来还是老老实实循环处理吧。 另外我的重复是指,一个数字在挨着的两行里面出现就算的,第一行里面出现,第二行里面出现就算重复了,位置在第几个都可以的。
luojxun 2014-12-30
  • 打赏
  • 举报
回复
借用楼上的表 select f1 form test 得到一个数组,然后调用maxSerial 楼上把一件简单的事情做得这么复杂。
引用 1 楼 luojxun 的回复:
把那一列搜出来,得到数组,然后再判断

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;
}
果酱很好吃 2014-12-30
  • 打赏
  • 举报
回复
貌似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数据
luojxun 2014-12-30
  • 打赏
  • 举报
回复
把那一列搜出来,得到数组,然后再判断

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;
}

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧