根据组完成数据过滤数据

时间:2018-03-13 19:29:51

标签: mysql

我有一个包含预定程序组的表。每个组由group_id表示,组中的每个程序都依赖于以前的程序来完成。但是,如果该组中的所有程序都已完成,我不需要安排任何事情。因此,如果包含程序的组全部完成,我需要过滤数据。 order定义了需要安排的程序的顺序

id, group_id, trigger_group_id, trigger,  order
1    1         NULL             SCHEDULED  0
2    1         1                COMPLETED  1
3    1         1                SCHEDULED  2
4    2         NULL             COMPLETED  0
5    2         1                COMPLETED  1 

如何过滤数据,以便不使用mysql返回第2组?

1 个答案:

答案 0 :(得分:1)

选择相关子查询中组的最后一行,并比较trigger值:

select *
from mytable t
where 'SCHEDULED' = (
  select `trigger`
  from mytable t2
  where t2.group_id = t.group_id
  order by t2.id desc
  limit 1
)

演示:http://sqlfiddle.com/#!9/976d5/1