关闭。这个问题需要更加突出重点。它目前不接受答案。
**想改进这个问题吗?**通过编辑这篇文章更新这个问题,使它只关注一个问题。
两年前关门了。
改进这个问题
我有下面的表结构,其中我只想那些记录,这是在5个连续的日期和组的uid。
这是我的数据结构
用户\u主机
uid | name
1 | A
2 | B
3 | C
4 | D
tbl\U转介
refId | uid | Date
1 | 1 | 01-09-2018
2 | 1 | 02-09-2018
3 | 1 | 03-09-2018
4 | 2 | 01-09-2018
5 | 2 | 02-09-2018
6 | 1 | 04-09-2018
7 | 2 | 05-09-2018
8 | 2 | 06-09-2018
9 | 1 | 05-09-2018
10 | 2 | 06-09-2018
现在我只想从tblèu referror获取那些日期连续出现5次的记录
所需输出为
uid | Date
| 01-09-2018
| 02-09-2018
1 | 03-09-2018
| 04-09-2018
| 05-09-2018
2条答案
按热度按时间b1zrtrql1#
您可以通过将表与自身连接4次来实现这一点,以后每一天连接一次。请注意,由于您的日期不是mysql格式,您必须将其转换为数学:
输出:
sqlfiddle演示
ddarikpa2#
您可以将表与其自身连接起来,并计算5天范围内的行数。如果计数为5,则范围包含所有连续日期。
此查询假定
date
列为DATE
,不是字符串。如果是字符串,你需要使用STR_TO_DATE()
把它转换成尼克回答的日期。但最好将日期存储为DATE
而不是字符串,因此可以使用索引(它们占用的空间也较少)。