如何使用 SQL 选择特定字段的重复行,允许时差?

用户3827510

我在 MySQL 数据库中记录发送电子邮件,我想查找同时发送的重复电子邮件。

此查询工作顺利找到在发送的电子邮件确切的同一时间:

SELECT user_id, template, created_at, COUNT(*)
FROM emails
WHERE sender_id = 08347
GROUP BY user_id, template, created_at
HAVING COUNT(*) > 1;

但是如果我想允许一个时间裕度,比如created_at+/- 5 秒,我不确定如何在GROUP BY.

如何选择允许时差的重复电子邮件?

编辑:

可能有 2 封以上的电子邮件在同一时间发送,理想情况下查询将包含这些电子邮件,尽管我意识到这可能会变得复杂,例如,如果有许多相同的电子邮件在一个小时内持续发送一秒钟。

亚历克斯

这只是如何实现您想要的示例。但这是相当昂贵的查询。如果你有一张大桌子——这会变得很慢。为了提高性能,我建议创建另一列10_sec_period并在每次插入时使用一些触发器更新它。最重要的是,这个新列需要添加到某个索引中。

SELECT user_id, 
       template,
       SEC_TO_TIME((TIME_TO_SEC(created_at) DIV 60) * 60) AS 10_sec_period, 
       COUNT(*)
FROM emails
WHERE sender_id = 08347
GROUP BY user_id, template, 10_sec_period
HAVING COUNT(*) > 1;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在sql查询中选择特定的行?

来自分类Dev

如何使用仅在日期之间选择(SQL)

来自分类Dev

如何使用SQL创建嵌套选择?

来自分类Dev

如何使用SQL删除重复的元组

来自分类Dev

SQL如何使用表名称表从表中选择特定字段

来自分类Dev

SQL:如何选择总计为特定值的行

来自分类Dev

如何使用SQL查询删除MySQL中的重复行?

来自分类Dev

如何使用sql递增字段?

来自分类Dev

如何使用Postgres SQL按年份间隔选择行?

来自分类Dev

如何使用自己的值更新行SQL

来自分类Dev

如何使用SQL从每个产品中选择最旧的日期行

来自分类Dev

SQL-如何在特定行之前选择x行数

来自分类Dev

如何基于使用SQL Server选择的非重复(列)获取非重复行

来自分类Dev

使用SQL Server选择时忽略2行重复

来自分类Dev

如何使用proc sql计算重复日期

来自分类Dev

如何使用SQL创建嵌套选择?

来自分类Dev

选择Sql行到字段

来自分类Dev

SQL-如何选择不包含特定ID的行

来自分类Dev

SQL:如何选择总计为特定值的行

来自分类Dev

如何使用SQL查询删除MySQL中的重复行?

来自分类Dev

如何选择对行使用SQL是数组

来自分类Dev

使用SQL选择特定信息

来自分类Dev

如何在SQL中仅在一个字段上选择没有重复的记录,而在SQL中总共选择重复的字段

来自分类Dev

SQL:如何使用变量单独过滤行?

来自分类Dev

如何使用 SQL 删除 MS Access DB 中的重复行

来自分类Dev

如何使用where条件检测SQL中的重复行

来自分类Dev

如何从 SQL 表中选择特定行并在 SQL Server 中连接多个表?

来自分类Dev

如何使用 SQL 从前 n 行查询?

来自分类Dev

使用 SQL Server:如何使用基于总和的选择条件

Related 相关文章

热门标签

归档