我在MySQL中有一个这样的表:
Group Seqno Event
1 1 A
1 2 B
1 3 C
1 4 B
1 5 E
1 6 B
1 7 D
1 8 A
我想对每个具有Event = B的组的最后一个(最近的条目)行进行计数,并在计数达到2时立即返回所有剩余的行。 输出将为
Group Seqno Event
1 4 B
1 5 E
1 6 B
1 7 D
1 8 A
任何想法如何实现它。
答案 0 :(得分:1)
您似乎想要从第二行到最后一个“ B”的所有行?
如果是这样,则可以使用相关子查询:
select t.*
from t
where t.seqno >= (select t2.seqno
from t t2
where t2.group = t.group and t2.event = 'B'
order by t2.seqnum desc
limit 1, 1
);
要处理可能没有“第二”序列号的情况,可以使用coalesce()
:
select t.*
from t
where t.seqno >= coalesce( (select t2.seqno
from t t2
where t2.group = t.group and t2.event = 'B'
order by t2.seqnum desc
limit 1, 1
), t.seqno
);