SQL 查询忽略相邻的匹配行

2023-12-31

我有一个活动表,其中包含各种活动和哈希值(actorEntity|subjectEntity|activity-type)

在某些情况下,用户可能会在几秒钟内执行完全相同的活动两次,这意味着数据库中会有两个相邻的行具有完全相同的数据。

对于某些用例,我们不想显示重复的活动,因此我们现在根据哈希过滤掉应用程序中的重复项。唯一的问题是,这些活动在某些情况下也会进行分页,这意味着从应用程序的结果集中提取记录会与分页发生冲突。

我正在寻找一种在 SQL 中执行此操作的方法,以便可以在数据库级别完成分页。

给定数据:

id  | message           | from  | hash
-------------------------------------
1   | hello             | bryan | b-hello
2   | goodbye           | bryan | b-goodbye
3   | goodbye           | john  | j-goodbye
4   | goodbye           | john  | j-goodbye 
5   | hello             | john  | j-hello   
6   | goodbye           | john  | j-goodbye

我想检索以下结果集:

id  | message           | from  | hash
-------------------------------------
1   | hello             | bryan | b-hello
2   | goodbye           | bryan | b-goodbye
4   | goodbye           | john  | j-goodbye
5   | hello             | john  | j-hello
6   | goodbye           | john  | j-goodbye

请注意,虽然第 3 行和第 4 行相同,但只有一行位于所需结果集中,因为它们是相邻的。即使第 6 行是相同的哈希,它也应该包含在结果中,因为它与另一个相同的哈希不相邻。

我不关心结果中返回哪些相邻行,因为它们是相同的。

我正在使用 MySql 5.5。


看一下这个: *SQLFIDDLE http://sqlfiddle.com/#!2/ce86b/1我有点怀疑,好像这对于你的要求来说太简单了。所以请评论。我向样本数据添加了更多重复记录。以下查询删除最新的重复项,保留第一个条目。

样本数据:

ID  MESSAGE     FROMA   HASHA
1   hello       bryan   b-hello
2   goodbye     bryan   b-goodbye
3   goodbye     john    j-goodbye
4   goodbye     john    j-goodbye
5   goodbye     john    j-goodbye
6   hello       john    j-hello
7   goodbye     bryan   b-goodbye
8   goodbye     bryan   b-goodbye

查询查找相同记录(最新的一条或多条):

select* from actors a
join actors b
where b.id + 1 = a.id
and b.hasha = a.hasha
;

Result:

ID  MESSAGE     FROMA   HASHA
4   goodbye     john    j-goodbye
5   goodbye     john    j-goodbye
8   goodbye     bryan   b-goodbye

查询以获取唯一记录:

select * from actors a
where a.id not in (
select a.id from actors a
join actors b
where b.id + 1 = a.id
and b.hasha = a.hasha
);

Results:

ID  MESSAGE     FROMA   HASHA
1   hello       bryan   b-hello
2   goodbye     bryan   b-goodbye
3   goodbye     john    j-goodbye
6   hello       john    j-hello
7   goodbye     bryan   b-goodbye
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 查询忽略相邻的匹配行 的相关文章

  • 错误代码:1062。重复条目“PRIMARY”

    因此 我的教授给了我表格将其插入数据库 但是当我执行他的代码时 MySQL 不断给出错误代码 1062 这是冲突表和插入 TABLES CREATE TABLE FABRICANTES COD FABRICANTE integer NOT
  • 如何在 Ansible 中运行 MySQL 查询

    我需要编写一个 Ansible 脚本来在 MySQL 数据库中执行 SQL 查询 这是我尝试过的 你能指导一下吗 hosts localhost tasks name retrive data command mysql u root h
  • 使用显式创建表语句与 select into 创建表

    使用显式创建表语句和加载数据与选择数据之间是否存在性能差异 此示例仅显示 2 列 但问题是针对使用非常大的表 下面的示例也使用临时表 尽管我也想知道使用常规表的效果 我认为无论表格类型如何 它们都是相同的 临时表场景 Explicitly
  • 条件对列表的 In 子句

    有一个表 我需要通过在配对值列表中应用和条件来获取分页记录 下面是解释 假设我有一堂课Billoflading其中有各个领域 表中两个重要字段是 tenant billtype 我有一个包含值的对列表 tenant1 billtype1 t
  • 如何在postgresql中编写有关最大行数的约束?

    我认为这是一个很常见的问题 我有一张桌子user id INT 和一张桌子photo id BIGINT owner INT 所有者是一个参考user id 我想向表照片添加一个约束 以防止每个用户将超过 10 张照片输入数据库 写这个的最
  • MySQL - 查找接近的匹配项

    MySQL 有没有办法在文本字段中找到紧密匹配的内容 说找到 email protected cdn cgi l email protection当搜索时 email protected cdn cgi l email protection
  • Mysql 将 --secure-file-priv 选项设置为 NULL

    我在 Ubuntu 中运行 MySQL 我在运行特定的查询集时收到此错误 MySQL 服务器正在使用 secure file priv 选项运行 因此无法执行此语句 当我这样做的时候SELECT secure file priv 在我的 m
  • 如何获取Postgres当前的可用磁盘空间?

    在开始在数据库中进行某些工作之前 我需要确保至少有 1Gb 的可用磁盘空间 我正在寻找这样的东西 select pg get free disk space 是否可以 我在文档中没有找到任何相关内容 PG 9 3 操作系统 Linux Wi
  • SQL Server - SQL 替换整个数据库中所有表中的所有列

    这是一个很遥远的事情 我猜这个问题没有简单的答案 但是 我继承了一个数据库 其中填充了一些可怕的数据 许多包含描述的行都有回车符 这意味着当我们 BCP 输出数据时 它会带有回车符 我的问题 有没有办法在 MS SQL Server 中对整
  • 在 Oracle 中使用数据透视表的建议

    我需要一份报告 我应该使用数据透视表 报告将按类别分组 使用 case when 语句不好 因为有很多类别 您可以将 Northwind 数据库视为示例 所有类别将显示为列和报告将显示客户在类别中的偏好 我不知道另一个解决方案 并在互联网上
  • 我们可以使用sql列出MS Access数据库中的所有表吗?

    我们可以使用 sql 找到 ms access 中的所有表吗 就像我们在 sql server 中所做的那样 select from sys tables 在sqlite中 SELECT FROM sqlite master where t
  • 转义用户数据,无需魔法引号

    我正在研究如何在来自外部世界的数据被用于应用程序控制 存储 逻辑等之前正确地对其进行转义 显然 随着 magic quote 指令在 php 5 3 0 中很快被弃用 并在 php6 中被删除 对于任何想要升级并进入新语言功能 同时维护遗留
  • 如何删除MySQL中的所有事件

    如果我想删除某个事件 我需要查询类似的内容 DROP EVENT IF EXISTS eventname 但我找不到一次性删除所有事件的命令 必须一项一项地删除 有没有一次性删除所有事件的SQL DROP EVENT IF EXISTS S
  • INTEGER 到 DATETIME 的转换与 VB6 不同

    我正在查看一些遗留的 VB6 代码 比我的时代早很多年 它对 SQL 2005 数据库运行查询 它提供了日期限制WHERE子句 其中日期作为整数值给出CLng VB6 中的日期 e g WHERE SomeDateField gt 4006
  • 如何修复“未知变量'sql-mode = ANSI'”?

    使用 MySQL 5 5 27 在 my cnf 中我有 mysql sql mode ANSI 启动 mysql 控制台后我得到 unknown variable sql mode TRADITIONAL MySQL 文档服务器 SQL
  • 具有“日期之间”的 CakePHP 模型

    我有一个很大的数据集 超过十亿行 数据在数据库中按日期分区 因此 我的查询工具必须在每个查询上指定一个 SQL Between 子句 否则它将必须扫描每个分区 而且 它会在返回之前超时 所以 我的问题是 分区的数据库中的字段是日期 使用 C
  • 什么是更好的?子查询或内连接十个表?

    一个旧系统已抵达我们的办公室进行一些更改和修复 但它也存在性能问题 我们并不确切知道这种缓慢的根源是什么 当我们重构旧代码时 我们发现了几个具有以下模式的 sql 查询 出于示例目的 简化了查询 SELECT SELECT X FROM A
  • MySQL 两种日期格式之间的转换

    用户将以这种格式输入日期 2017 年 2 月 17 日 存储在 mysql 数据库中的日期格式如下 2015 02 17 00 00 00 我想做的是 SELECT FROM insurance where DATE FORMAT in
  • Mysql加密/存储敏感数据,

    我的 PHP 网站有以下内容 启用 SSL 饼干 session set cookie params cookieParams lifetime cookieParams path cookieParams domain secure ht
  • 如何关闭整个数据库的区分大小写

    我创建了一个包含许多脚本和许多存储过程的数据库 在这个数据库中 我们没有注意担心区分大小写 因为它对于我的本地开发计算机来说是关闭的 综上所述 我试图弄清楚如何使以下两条语句返回相同的结果 SELECT FROM companies SEL

随机推荐

  • 在kivy中设置全局字体大小

    无论是通过 python 还是 kivy 语言 在 kivy 中设置全局字体大小 即按钮和标签 的首选方法是什么 根据窗口大小按比例动态更改全局字体大小设置的好方法是什么
  • “在此上下文中开始第二个操作” EF core 3.1 并发性重大更改 [重复]

    这个问题已经存在了 我正在从 netcoreapp 2 1 迁移到 3 1 并且发现了 EF core 3 1 的重大更改 但我无法解决 以下内容在 2 1 中有效 因此简单地说数据库上下文在设计上不是线程安全的 并指出其他不涉及此细微差别
  • git中p4merge合并工具出错

    我已经为 p4merge 设置了类路径并设置了文件 gitconfig 但是当 p4merge 工具假设要打开这两个冲突的文件时 我收到此错误 有人知道解决方案吗 添加到类路径 C Program Files Perforce p4merg
  • Delphi 中的类/静态常量

    在 Delphi 中 我希望能够创建一个与类关联的私有对象 并从该类的所有实例访问它 在Java中 我会使用 public class MyObject private static final MySharedObject myShare
  • 在 xaml 窗口和用户控件 WPF 之间传递参数

    如何将参数从 xaml 窗口传递到 WPF 用户控件构造函数 我尝试过创建依赖属性 但失败了 我应该尝试 xaml 扩展还是有其他方法可以做到这一点
  • 使用opencv检测肤色

    如何检测皮肤的颜色使用OpenCV 使用 OpenCV 怎么样 哈尔人脸检测器找到一个面部区域 然后得到平均或最常见的颜色在那个脸部区域 既然应该是肤色 Update 环境 我的镜框将具有面部特征 仅限从头发到肩膀 如附件所示 你真的不需要
  • 片段选项卡和片段活动

    我按照指南使用 Fragments 创建了一个应用程序 以便我可以在更大的屏幕上显示更详细的视图 不过 我也想使用选项卡进行导航 根据指南 选项卡也应该是片段 而不是已弃用的 TabHost 一些谷歌搜索表明你不能 不应该嵌套片段 我的问题
  • 在 Java 中解析日期格式

    我正在尝试用 Java 将日期转换为 Unix 时间戳 我的日期示例为 Fri Jun 05 15 53 07 PDT 2009 我的代码是 DateFormat dateFormat new SimpleDateFormat EEE MM
  • 忽略 R 字符串中的转义字符(反斜杠)

    在 SPSS 中运行 R 插件时 我收到一个 Windows 路径字符串作为输入 例如 C Users mhermans somefile csv 我想在后续的 R 代码中使用该路径 但是需要用正斜杠替换斜杠 否则 R 将其解释为转义符 例
  • 如何在 R 中为 tableGrob 自定义特定列?

    我正在寻找自定义 tableGrob 中的特定列 对于这个可重现的示例 我选择查看自定义理由 假设您有以下数据框 df lt data frame Order c 1 3 Name c Adam Ben Charlie Score c 4
  • 为 R 中具有相同符号的连续数字的每个范围分配一个值

    我正在尝试创建一个数据框 其中存在一列 该列保存表示正数和负数的运行长度的值 如下所示 Time V Length 0 5 2 1 5 1 0 1 1 5 1 5 0 0 0 2 0 2 1 0 2 5 0 0 0 3 0 1 1 75 3
  • PHP exec() 未在输出中返回错误消息

    我正在尝试以 XML 格式获取 svn 命令的某些输出 当我输入有效参数时输出正常 但是 当我输入错误的密码时 输出不会显示错误消息 这是 PHP 代码 exec usr bin svn username something passwor
  • Laravel 4 分页计数

    我在我的特定视图 站点中设置了分页 并且它有效 问题是我有一个 php 计数器 foreach players as player tr td count td 每当我切换页面时 它都会从 1 开始 我怎样才能改变这一点 为了实现这一点 您
  • Selenium 不使用 InternetExplorerDriver 单击按钮的解决方法

    我在网页上有一个按钮 当我通过 IE 运行时 Webdriver 不会单击该按钮 我已经尝试了以下解决方法 但没有成功 通过 JavaScript 点击 JavascriptExecutor driver executeScript arg
  • 在 C 中使用 strncpy 更有效地复制 n 个字符

    我想知道是否有一种更干净 更有效的方法来执行以下操作strncpy考虑到max字符数 我觉得自己做得太过分了 int main void char string hello world foo int max 5 char str mall
  • 从类访问 LocationManager/ LocationListener

    我有点迷失在这里 在我的主要活动中 我注册了一个 LocationManager 并将其连接到 LocationListener 以使用 myLocation getLatitude 等 现在我需要使用另一个类中的 Location 方法
  • 数据注释或应用程序验证块

    DataAnnotations 和应用程序验证块有什么区别 DataAnnotations 是一个基于属性的模型 用于 注释 数据 它位于 NET 框架本身中 它最明显的用途是验证 例如 ASP NET MVC 所做的那样 Validati
  • biglm 和 lm 之间的 AIC 不同

    我一直在尝试使用 biglm 在大型数据集 大约 60 000 000 行 上运行线性回归 我想用AIC来进行模型选择 然而 当我在较小的数据集上使用 biglm 时 我发现 biglm 返回的 AIC 变量与 lm 返回的变量不同 这甚至
  • 如何确定隐藏/溢出文本是在元素的顶部还是底部

    我想扩展 Shog9 的答案 如何从javascript判断html元素是否有溢出内容 https stackoverflow com questions 143815 how to determine from javascript if
  • SQL 查询忽略相邻的匹配行

    我有一个活动表 其中包含各种活动和哈希值 actorEntity subjectEntity activity type 在某些情况下 用户可能会在几秒钟内执行完全相同的活动两次 这意味着数据库中会有两个相邻的行具有完全相同的数据 对于某些