如何使用MySQL选择具有特定值的2个连续行的位置?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用MySQL选择具有特定值的2个连续行的位置?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1223字,纯文字阅读大概需要2分钟。
内容图文
![如何使用MySQL选择具有特定值的2个连续行的位置?](/upload/InfoBanner/zyjiaocheng/893/7d943ad49293438d9b77d7c5294e6ffb.jpg)
我正在建立一个系统,应该显示学生连续两天错过.
例如,此表包含缺席.
day | id | missed
----------------------------------
2016-10-6 | 1 | true
2016-10-6 | 2 | true
2016-10-6 | 3 | false
2016-10-7 | 1 | true
2016-10-7 | 2 | false
2016-10-7 | 3 | true
2016-10-10 | 1 | false
2016-10-10 | 2 | true
2016-10-10 | 3 | true
(days 2016-10-8 and 2016-10-9 are weekend)
在上面的情况:
>学生1错过了第1天和第2天. (连续的)
>学生2错过了第1和第3天. (不连续的)
>学生3错过了第二和第三天. (连续的)
查询应该只选择学生1和3.
只用一个SQL查询就可以做这样的事情吗?
解决方法:
使用内部联接来连接表的两个实例 – 一个与’第一天’,一个与’第二’天,然后只查找两个错过的行:
select a.id from yourTable as a inner join yourTable as b
on a.id = b.id and a.day = b.day-1
where a.missed = true and b.missed = true
编辑
现在您已经更改了规则…并将其设置为日期而不是日期列中的int,这就是我要做的:
>使用DAYOFWEEK()功能以数字作为一天
>过滤掉周末
>使用modulo将星期日作为星期四的第二天:
select a.id from yourTable as a inner join yourTable as b
on a.id = b.id and DAYOFWEEK(a.day) % 5 = DAYOFWEEK(b.day-1) % 5
where a.missed = true and b.missed = true
and DAYOFWEEK(a.day) < 6 and DAYOFWEEK(b.day) < 6
内容总结
以上是互联网集市为您收集整理的如何使用MySQL选择具有特定值的2个连续行的位置?全部内容,希望文章能够帮你解决如何使用MySQL选择具有特定值的2个连续行的位置?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。