Mysql 如何查找连续行,即员工是';缺席';?
我有一个表名employee。它有4列:id、名称、状态和当前日期 date_present列包含员工出席和缺席的所有日期。我需要写一个查询,看看是否有员工连续缺勤超过3天Mysql 如何查找连续行,即员工是';缺席';?,mysql,sql,Mysql,Sql,我有一个表名employee。它有4列:id、名称、状态和当前日期 date_present列包含员工出席和缺席的所有日期。我需要写一个查询,看看是否有员工连续缺勤超过3天 id | name | statuse | date_presnet 1 | khan | present | 2016-12-1 2 | jan | present | 2016-12-2 3 | Kiran| absent | 2016-12-3 4 | jan | absent | 2016-12-4
id | name | statuse | date_presnet
1 | khan | present | 2016-12-1
2 | jan | present | 2016-12-2
3 | Kiran| absent | 2016-12-3
4 | jan | absent | 2016-12-4
4 | jan | absent | 2016-12-5
4 | jan | absent | 2016-12-6
MySQL(或任何数据库)中的一种方法是使用join
将记录连接到下一个日期:
select t.*
from t join
t t2
on t2.id = t1.id and
t2.date = date_add(t1.date, interval 1 day) and
t2.status = 'absent' and t.status = 'absent' join
t t3
on t3.id = t1.id and
t3.date = date_add(t1.date, interval 2 day) and
t3.status = 'absent' ;
“我需要它紧急”是问题的一部分吗?我想建议你用PHP或编程语言检查连续3次缺席,而不是用MySQL查询。也许输入更快会有助于解决问题的紧急性。这是OP的第二篇文章。否决票和结束票并不受欢迎。是的,我承认“紧急”部分有点冒昧(所以我删除了它)。OP可以显示一个示例查询,但大多数问题都没有。对OP进行教育确实比投票否决或投票结束要好。这个问题本身是合理的。@GordonLinoff你可能还记得投票的原因。如果您将鼠标悬停在箭头上方,则表示“它显示了研究成果、有用且清晰”。这并不意味着“我只是回答了它,我想支持它”,就像你经常声称的那样。当我们其他人试图保持堆栈清洁时。值得一提的是,我没有投反对票,也没有投反对票。但我每天接近40到50英镑。