Mysql 根据条件筛选SQL表

Mysql 根据条件筛选SQL表,mysql,sql,relational-database,Mysql,Sql,Relational Database,我在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的每个组,我想计算最后一行(最近的条目)中的所有行,并在达到count 2时返回所有剩余的行。 输出将是 Group Seqno Event 1 4 B

我在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的每个组,我想计算最后一行(最近的条目)中的所有行,并在达到count 2时返回所有剩余的行。 输出将是

Group Seqno Event
  1    4     B
  1    5     E
  1    6     B
  1    7     D
  1    8     A

你知道如何实现吗。

你似乎想要从第二行到最后一行的“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()


您似乎想要每组中从第二行到最后一行的所有行。谢谢。我从每组的最后一条记录中数“B”。例如,第16B行是计数1,第14B行是计数2。现在,返回这行下面的所有记录。@No\u body。我想这正是你想要的。谢谢。它工作得很好,但如果没有“B”或计数小于2,比如说1,在这种情况下,我应该如何继续?t2.event='B'将在没有事件的情况下失败B@No_body . . . 在这种情况下,不会返回任何行。没有“failure”,只有一个
NULL
返回值。如果B的计数小于2,则不返回该ID的任何行。是否可以设置类似if count的条件
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
                         );