Php SQL:获得具有相同值的最大连续行数的方法?
我正在尝试获取具有连续值的行数的最大计数。例如,如果下面是一个表格,我计算了连续“a”的总数,我会得到5 A. B B A. A. A. A. A. B 我正试图找到一种在SQL中实现这一点的简洁方法。我正试图用PHP实现这一点,但却遇到了困难,并创建了一个混乱的解决方案:Php SQL:获得具有相同值的最大连续行数的方法?,php,mysql,sql,Php,Mysql,Sql,我正在尝试获取具有连续值的行数的最大计数。例如,如果下面是一个表格,我计算了连续“a”的总数,我会得到5 A. B B A. A. A. A. A. B 我正试图找到一种在SQL中实现这一点的简洁方法。我正试图用PHP实现这一点,但却遇到了困难,并创建了一个混乱的解决方案: $streaksql = "SELECT * FROM `mytable`"; $streaksql = $modx->query($streaksql); $outcomecounter = 0;
$streaksql = "SELECT * FROM `mytable`";
$streaksql = $modx->query($streaksql);
$outcomecounter = 0;
$highestoutcome = 0;
while ($streak = $streaksql->fetch(PDO::FETCH_ASSOC)) {
$outcome = $row['outcome'];
if($outcome == 'A'){
$outcomecounter = $outcomecounter +1;
if($outcomecounter > $highestoutcome){
$highestoutcome = $outcomecounter;
}
}
else {
$outcomecounter = 0;
}
};//WHILE
echo $highestoutcome;
我想知道是否有人知道在SQL查询中使用更简洁的方法?试试这种逻辑
select top 1 col1 from myTable
group by col1
order by count(col2) desc
试试这个:
select COUNT(*)+1
FROM your_table a1
where value=(select value from your_table where your_table.id<a1.id order by id desc LIMIT 1) AND value= 'A'
CMIIW:
参考这篇文章另一个想法:
SELECT outcome, max(Amount) from (
SELECT outcome,
IF(@a =outcome, @b := @b+1, @b := 1) as "Amount",
@a := outcome
FROM mytable
WHERE false = (@b:=0)
AND outcome = 'A'
) as test
GROUP by outcome;
你的意思是连续的,对吗?哦,是的,我知道-谢谢可能是感谢的重复,但我在用代码复制它时遇到了问题。你能举一个例子吗?仅仅是sql查询-我很难理解col1的用途,因为我只需要使用我要修改的col值,请检查,select中也只能有一个col。