によってソートされたすべての行を取得します。問題のcatch_idには1週間idだけが与えられます。
drop table if exists consecutive;
create table consecutive
(id int,week_id int,user_id int,catch_id int);
insert into consecutive values (1,2,6,0);
insert into consecutive values (1,3,6,1);
insert into consecutive values (1,4,6,1);
insert into consecutive values (1,5,6,1);
insert into consecutive values (1,6,6,0);
insert into consecutive values (1,7,6,0);
insert into consecutive values (1,8,6,2);
insert into consecutive values (1,9,6,0);
insert into consecutive values (1,10,6,0);
insert into consecutive values (1,11,6,1);
select w,count(*) as max_consecutive_weeks
from
(
select
case when @cur_catch_id != catch_id then @cur_week_id := week_id else @cur_week_id end as w,
@cur_catch_id := catch_id as catchChange,
c.*
from consecutive c
cross join (select @cur_catch_id := -1,@cur_week_id := -1) t
where user_id = 6
order by week_id asc
) t
where catch_id = 1
group by w
order by max_consecutive_weeks desc,w asc
limit 1;
あなたはwhere catch_id = 0
にwhere catch_id = 1
を変更することにより、catch_id = 0で最大の連続week_idsを取得するために、同じクエリを使用することができます。私は以下の回答でそれconsecutive
と呼ばれてきたので、私はあなたのテーブルが呼び出されるかわかりません。
幸運を祈る!
あなたのお問い合わせがうまくいきません。それを実行し、 – aWebDeveloper
謝罪を参照してください。別名の入力ミス。私は自分の答えを編集しました。 –