作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
例如,我有下表
Mobile number Timestamp
123456 17-09-2015 11:30
455677 17-09-2015 12:15
123456 17-09-2015 12:25
453377 17-09-2015 13:15
如果现在是 11:30,我想扫描我的表并查找过去 1 小时内具有相同数字的行。
这是我的 SQL 语句:
select a.number, a.time
from mytable a inner join
(select number, time
from mytable b
where time>=now()-Interval 1 hour and time<=now ()
group by number
Having count(*) > 1
) b
on a.number = b.number and a.time = b.time
我想找到 1 小时内发生的具有相同数字的重复 rown。我应该输出数字和时间戳。
最佳答案
只使用exists
怎么样?
select t.*
from mytable t
where t.time >= now() - Interval 1 hour and
t.time <= now() and
exists (select 1
from mytable t2
where t2.number = t.number and
t2.time >= now() - Interval 1 hour and
t2.time <= now () and
t2.time <> t.time
);
但是,我怀疑您的查询的问题在于与 time
的连接。只需从子查询和 on
子句中删除时间,您就会得到所有数字。或者,使用分组依据
:
select t.number, group_concat(time)
from mytable t
where t.time >= now() - Interval 1 hour and
t.time <= now()
group by t.number
having count(*) > 1;
关于mysql - 如何在sql中查找预定义时间段内表中的重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32630688/
我是一名优秀的程序员,十分优秀!