Pgsql怎样找到表中某个字段值重复的记录并删除冗余记录,只保留一条

背景

今天发现某个黄页爬取的数据有部分重复了,原本我用的公司详情页的url进行md5来作为主键做upsert入,但后面在核验数据时发现有些详情url虽是同一间公司的,但路由上有细微差别导致写入了重复的公司数据,所以要想办法清理掉重复的公司;
除了有表id外,我的表里还有一个local_id字段,用于保存页面上的内部id,下面就从这个字段入手进行;

实现方案

第一步首先是看看有多少重复的记录,这个很简单,通过group by local_id就能找到了,如下:

SELECT"local_id" 
FROM"result".table_name
WHERE"sources" = 'xxxx' 
GROUP BY"local_id" 
HAVINGCOUNT ( "local_id" ) > 1 )

结果数量是91条,这就意味着有91个公司的信息有重复的;

然后我想看看总共有多少条对应的重复公司记录

SELECT*,ROW_NUMBER ( ) OVER ( PARTITION BY local_id ORDER BY "company_id" ) AS rn 
FROM(SELECT* FROM"result".table_name WHERE"sources" = 'xxxx' AND "local_id" IN ( SELECT "local_id" FROM "result".table_name WHERE "sources" = 'xxxx' GROUP BY "local_id" HAVING COUNT ( "local_id" ) > 1 ) ORDER BY"local_id" ) T) 

查询结果是是182条,也就意味着重复的公司记录里,每家公司信息都是重复了1条;

接着下来的问题是怎样实现把多余的删除,只保留一条的目的,这里用到的pgsql的分区功能,他会根据指定字段值给相同的值增加一个编号,以下是我这个场景的示例:

SELECT* 
FROM(SELECT*,ROW_NUMBER () OVER ( PARTITION BY local_id ORDER BY "company_id" ) AS rn FROM(SELECT* FROM"result".table_nameWHERE"sources" = 'xxxx' AND "local_id" IN ( SELECT "local_id" FROM "result".table_name WHERE "sources" = 'xxxx' GROUP BY "local_id" HAVING COUNT ( "local_id" ) > 1 ) ORDER BY"local_id" ) T ) t1 
WHERErn = 2;

通过这条sql,可以把每个local_id重复的记录找出来,删除后就能达到只保留一条记录的目的了,如果重复的记录不只一条,只要把最后的条件改成 >=2 就可以了。

如果本文解决了你的问题,请点赞精神支持一下,这能鼓励我继续做更多的分享,谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/804449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性变换在人工智能领域的深度实践与应用探索

线性变换,作为数学中的一种基本工具,在人工智能领域中发挥着举足轻重的作用。其强大的表示能力和灵活的运算特性使得线性变换成为机器学习、深度学习等多个子领域的核心组成部分。本文将详细探讨线性变换在人工智能领域中的实践应用,旨在揭示…

redis分布式锁介绍及代码示例

Redis 分布式锁是一种利用 Redis 实现的分布式系统中的锁机制,用于在分布式环境下控制多个客户端对共享资源的访问。它通过 Redis 的原子性操作来确保在分布式系统中的不同节点上,同一时刻只有一个客户端能够获取到锁,从而保证了对共享资源的…

自动化测试selenium

目录 什么是自动化测试 什么是selenium selenium工作原理 selenium环境搭建 1.查看chrome浏览器版本 2.下载chrome浏览器驱动 3.配置系统环境变量PATH 4.验证环境是否搭建成功 selenium相关API 1.定位元素 CSS选择器定位 xpath定位元素 标签定位元素 2.操作测试对…

2024年华为OD机试真题-孙悟空吃蟠桃-Python-OD统一考试(C卷)

题目描述: 孙悟空爱吃蟠桃,有一天趁着蟠桃园守卫不在来偷吃。已知蟠桃园有N颗桃树,每颗树上都有桃子,守卫将在H小时后回来。 孙悟空可以决定他吃蟠桃的速度K(个/小时),每个小时选一颗桃树,并从树上吃掉K个,如果树上的桃子少于K个,则全部吃掉,并且这一小时剩余的时间…

novnc本地文件读取和写入权限

在使用NoVNC(一种基于Web的VNC客户端)时,出于安全考虑,通常不允许直接从客户端访问或修改服务器上的文件系统。如果你需要在NoVNC中实现文件的读写,你可能需要使用一些特殊的配置或者服务器端的支持。 例如&#xff0…

浏览器工作原理与实践--渐进式网页应用(PWA):它究竟解决了Web应用的哪些问题

在专栏开篇词中,我们提到过浏览器的三大进化路线: 第一个是应用程序Web化; 第二个是Web应用移动化; 第三个是Web操作系统化; 其中,第二个Web应用移动化是Google梦寐以求而又一直在发力的一件事&#xf…

【免费SSL】免费一年的SSL证书

一、SSL证书行业政策 目前市面上绝大多数的免费SSL证书有效期都在3个月左右,而不是一年。例如,腾讯云在2024年4月后不再提供有效期为一年的免费证书,改为提供有效期为3个月的免费证书。同样,阿里云在2023年11月后也不再提供有效期…

javaScript常见对象方法总结

1,object.assign() 用于合并对象的属性。它可以将一个或多个源对象的属性复制到目标对象中,实现属性的合并。 语法 Object.assign(target, ...sources); 1,target:目标对象,将属性复制到该对象中。 2,sources:一个…

51单片机学习笔记16 小型直流电机和五线四相电机控制

51单片机学习笔记16 小型直流电机和五线四相电机控制 一、电机分类二、小型直流电机控制1. 简介2. 驱动芯片ULN2003D3. 代码实现dc_motor_utils.cmain.c 三、五线四相步进电机控制1. 步进电机工作原理2. 构造3. 极性区分4. 驱动方式5. 28BYJ-48步进电机(1&#xff0…

3D可视化技术亮相高铁站,引领智慧出行新潮流

在科技飞速发展的今天,我们的生活正经历着前所未有的变革。高铁站作为现代交通的重要枢纽,也在不断地创新和进步。 3D可视化技术通过三维立体的方式,将高铁站内部和外部的结构、设施、流线等以更加直观、生动的形式呈现出来。乘客们只需通过手…

幸运的彩票

题目描述 彩票的号码有 6 位数字,若一张彩票的前 3 位上的数之和等于后 3 位上的数之和,则称这张彩票是幸运的。本题就请你判断给定的彩票是不是幸运的。 输入格式 输入在第一行中给出一个正整数 N(≤ 100)。随后 N 行&#xff0…

Docker容器嵌入式开发:MySQL表的外键约束及其解决方法

本文内容涵盖了使用MySQL创建数据库和表、添加数据、处理字符集错误、解决外键约束问题以及使用SQL查询数据的过程。通过创建表、插入数据和调整字符集等操作,成功解决了数据库表中的字符集问题,并使用INSERT语句向各个表中添加了示例数据。同时&#xf…

MySQL - MySQL的RR隔离级别是如何基于ReadView机制实现的?

RR级别下,这个事务读取一条数据,无论读多少次,都是一个值,别的事务修改数据之后,哪怕提交了,你也是看不到人家修改的值的,这就避免了不可重复读的问题。 同时如果别的事务插入了一些新的数据,你也是读不到的,这样就可以避免幻读问题。这到底是如何实现的呢? 首先我…

《深入Linux内核架构》第1章 简洁和概述

目录 1.1 内核的任务 1.2 实现策略 1.3 内核的组成部分 ​1.3.1 进程、进程切换、调度 1.3.2 UNIX 进程 1.3.3 地址空间和特权级别 1.3.4 页表 1.3.5 物理内存的分配 1.3.6 计时 1.3.7 系统调用 1.3.8 设备驱动程序 1.3.9 网络 1.3.10 文件系统 1.3.11 模块和热插…

LangChain - Output Parsers

文章目录 一、输出解析器 (Output Parsers)快速入门 二、列表解析器三、datetime 日期时间解析器四、枚举解析器五、自动修复解析器六、Pydantic(JSON)解析器七、重试解析器八、结构化输出解析器 structured 转载改编自: https://python.lang…

AIGC实战——StyleGAN(Style-Based Generative Adversarial Network)

AIGC实战——StyleGAN 0. 前言1. StyleGAN1.1 映射网络1.2 合成网络1.3 自适应实例归一化层1.4 风格混合1.5 随机变化 2. StyleGAN 生成样本3. StyleGAN23.1 权重调制与解调3.2 路径长度正则化3.3 非渐进式增长 4. StyleGAN2 生成样本小结系列链接 0. 前言 StyleGAN (Style-Ba…

【LeetCode热题100】【二叉树】对称二叉树

题目链接:101. 对称二叉树 - 力扣(LeetCode) 递归解决,如果都空那么相等,否则有一个为空那么不相等,剩下就是都不为空,判断元素是否相等,接着递归判断左边的左子树是否等于右边的右…

安卓的认证测试

1 CTS CTS 是 Android 兼容性测试套件,用于验证设备是否符合 Android 平台的兼容性标准。它包含一系列测试用例,涵盖了设备的各个方面,如硬件功能、软件功能、API 的正确实现等。通过 CTS 测试,设备厂商可以确保其设备符合 Andro…

软件工程、微服务架构风格的概念以及实际应用

微服务架构风格的概念 微服务架构是一种将一个应用程序作为一套小的服务的开发风格,每个服务运行在其自己的进程中,并通常围绕着业务能力组织。这些服务可以通过轻量级的通信机制(通常是HTTP RESTful API)相互独立部署、扩展和维…

Accuracy准确率,Precision精确率,Recall召回率,F1 score

真正例和真反例是被正确预测的数据,假正例和假反例是被错误预测的数据。然后我们需要理解这四个值的具体含义: TP(True Positive):被正确预测的正例。即该数据的真实值为正例,预测值也为正例的情况&#xf…