PostgreSQL 删除重复数据

我们常常会遇到这样的问题,就是数据重复。然后我们需要对重复数据进行删除。保留最大还是最小则根据具体业务来判断。

假设有表 vbi1 在设计表的时候由于 vbi01 没有被设置为主键,这个时候业务发现 vbi01 重复了,我们需要根据字段 vbi01 来删除重复的 vbi01,保留最早或者最近插入的数据行。

这里我们不得不讲一个关于 PostgreSQL 的知识点,就是即使表在没有设置主键的情况下,PostgreSQL 在底层数据实现上会有一个默认的 CTID 值。

cloud_test=# select ctid,vaf01 from vaf1;
 ctid  |       vaf01
-------+--------------------
 (0,1) | 934376602115133442
 (0,2) | 934376602115133441
 (0,3) | 934376602115133440
 (0,4) | 932591980117118979
 (0,5) | 932591980117118978
 (0,6) | 932591980117118977
(6 rows)

cloud_test=#
备注:这里的 ctid 就是行在底层存储的唯一标识。

需求:对表中重复的数据进行删除保留最小的 CTID 或者最大的 CTID 值。
CREATE INDEX IF NOT EXISTS ix_vbi1_vbi01 ON public.vbi1 USING BTREE(vbi01);
首先我们需要在重复值的字段上创建一个索引,这可以帮助提高删除重复数据的执行效率。

DELETE FROM vbi1 a WHERE a.ctid <> (SELECT min(b.ctid) FROM vbi1 b WHERE a.vbi01 = b.vbi01);
UPDATE vbi1 SET vbi01 = (-1)*vbi1.vbi01 FROM vbi1 b WHERE vbi1.vbi01 = b.vbi01 AND vbi1.ctid < b.ctid
DROP INDEX IF EXISTS ix_vbi1_vbi01;
ALTER TABLE vbi1 ADD PRIMARY KEY(vbi01);

说明:执行删除还是将重复数据前加 - 号根据场景取舍,最后设置表字段为主键或者唯一索引都可以避免后续的数据重复。

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

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

相关文章

优选算法专题一 ——双指针算法

&#x1f308;个人主页&#xff1a;小新_- &#x1f388;个人座右铭&#xff1a;“成功者不是从不失败的人&#xff0c;而是从不放弃的人&#xff01;”&#x1f388; &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f3c6;所属专栏&#xff1…

敢为人先 创世富尔是如何引领磁性元件磁集成技术风向的

【哔哥哔特导读】2021年便已实现车载OBC磁集成产品的量产&#xff0c;创世富尔将如何通过磁集成技术改变电源行业生态&#xff0c;并确立自身的领先优势&#xff1f; 自2023年新能源汽车厂商开启价格战以来&#xff0c;这波内卷逐渐蔓延至所有终端领域&#xff0c;加上上游材料…

Google如何做医疗大模型(Med-Gemini)

1. 前言 开发垂直领域模型的方法有好几种&#xff0c;其中医疗、法律等专业是比较能体现模型垂直行业能力的&#xff0c;因此也深受各大厂商的重视。 五一小长假的第一天&#xff0c;Google在Arxiv上发布了《Capabilities of Gemini Models in Medicine 》 ( https://arxiv.o…

虚拟光驱软件 PowerISO v8.7.0 中文激活版

PowerISO 是一款虚拟光驱工具及强大的光盘映像文件制作工具。支持创建、编辑、提取、压缩、加密和转换ISO/BIN图像文件。同时自带DISM工具&#xff0c;支持ESD/ISO/WIM/ESD格式转换&#xff0c;制作镜像文件制作U盘启动&#xff0c;支持ISO/BIN/IMG/DAA/WIM等各种常见文件类型。…

【简历】25届湖南某专升本JAVA简历:项目名称不要过份搞笑!!

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 另外&#xff1a;我们出这一系列校招简历指导的原因&#xff0c;就是看很多学生被忽悠&#xff0c;没有先定位大厂、中厂还是小公司&#xff0c;导…

目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8

目前最新最好用 NET 混淆工具 .NET Reactor V6.9.8 1、.NET Reactor V6.9.8 功能简介2、官方下载 1、.NET Reactor V6.9.8 功能简介 业界领先的源代码保护 .NET Reactor通过多种方法来防止反编译&#xff0c;这些方法会将 .NET 程序集转换为任何现有工具都无法反编译的进程。…

Android Activity 属性 TaskAffiity、allowTaskReparenting

Activity未设置taskAffinity属性 页面跳转顺序 MainActivity -> StandardActivity -> SingleTopActivity-> SingleTaskActivity-> SingleInstanceActivity-> SingleInstancePerTaskActivity MainActivity 标准启动模式 StandardActivity 标准启动模式 SingleTo…

PPT批量替换字体

1.【开始】➡【查找】➡【替换字体】。 2.在弹窗内选择替换字体&#xff0c;和想要换成的字体&#xff0c;设置好点击【替换】&#xff0c;然后点击【关闭】或者左上角的小【】。 3.可以检查一下&#xff0c;每一页的【宋体】或者其他字体&#xff0c;都被改成了【微软雅黑】…

模型 支付矩阵

系列文章 分享 模型&#xff0c;了解更多&#x1f449; 模型_思维模型目录。策略选择的收益分析工具。 1 支付矩阵的应用 1.1 支付矩阵在市场竞争策略分析中的应用 支付矩阵是一种强大的决策工具&#xff0c;它在多个领域的应用中都发挥着重要作用。以下是一个具体的应用案例…

五指cms安装

我在安装五指cms的过程中发现一个问题&#xff0c;我看到的大部分的安装指导并没有详细的告诉大家该怎样做。所以我写这篇博客来进行一个比较详细的指导。 第一步&#xff1a;解压我们的wuzhicms文件并将其移动到phpstudy的WWW文件目录下。 第二步&#xff1a; 在phpstudy配置…

3个模型的交互式多模型IMM,基于EKF的目标跟踪实例(附MATLAB代码)

文章目录 3个模型的IMM源代码运行结果代码介绍总结 3个模型的IMM 代码实现了基于 I M M IMM IMM&#xff08;Interacting Multiple Model&#xff09;算法的目标跟踪。它使用三种不同的运动模型&#xff08;匀速直线运动、左转弯和右转弯&#xff09;来预测目标的位置&#x…

OpenCV视觉分析之目标跟踪(4)目标跟踪类TrackerDaSiamRPN的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::TrackerDaSiamRPN 是 OpenCV 中用于目标跟踪的一个类&#xff0c;它实现了 DaSiam RPN&#xff08;Deformable Siamese Region Proposal Net…

【Linux系统编程】第三十九弹---探索信号处理的奥秘:阻塞信号与sigset_t的深入剖析及实战

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、信号处理 2、阻塞信号 2.1、信号其他相关常见概念 2.2、在内核中的表示 2.3、sigset_t 2.4、信号集操作函数 3、完整…

QNAP威联通NAS设置了仅允许列表内的计算机连接,但是忘记有效IP地址怎么访问

创作立场&#xff1a;原创不易&#xff0c;拒绝搬运~ hello 大家好&#xff0c;我是你们的老伙伴&#xff0c;稳重的大王~ 本期教程为大家介绍一个使用场景的故障解除办法&#xff0c;如果遇到类似问题&#xff0c;可以参考一下解题思路~ 如上图所示位置&#xff0c;不小心设…

LabVIEW非接触式模态参数识别系统开发

基于LabVIEW的模态参数识别系统采用非接触式声学方法&#xff0c;结合LabVIEW软件和高精度硬件&#xff0c;实现机械结构模态参数的快速准确识别。降低了模态分析技术门槛&#xff0c;提高测试效率和准确性。 项目背景与意义: 传统的模态分析方法&#xff0c;如锤击法&#x…

ssm011线上旅行信息管理系统(论文+源码)_kaic

毕业论文&#xff08;设计&#xff09; 题 目&#xff1a;线上旅行信息管理系统设计与实现 姓  名&#xff1a; 专  业&#xff1a; 班  级&#xff1a; …

【RAG实战】优化索引的四种高级方法,快点收藏起来!!

前言 Indexing&#xff08;索引&#xff09;是搭建任何RAG系统的第一步&#xff0c;也是至关重要的一步&#xff0c;良好的索引意味着合理的知识或信息分类&#xff0c;召回环节就会更加精准。在这篇文章中&#xff0c;围绕Indexing&#xff08;索引&#xff09;环节&#xff…

【火山引擎】文生图实践 | PYTHON

目录 1 准备工作 2 实践 1 准备工作 ① 服务开通 确保已开通需要访问的服务。可前往火山引擎控制台并开通相应服务。 ② 获取安全凭证 Access Key (访问密钥)

北京迅为iTOP-LS2K0500开发板快速使用编译环境虚拟机Ubuntu基础操作及设置

迅为iTOP-LS2K0500开发板 迅为iTOP-LS2K0500开发板采用龙芯LS2K0500处理器&#xff0c;基于龙芯自主指令系统&#xff08;LoongArch&#xff09;架构&#xff0c;片内集成64位LA264处理器核、32位DDR3控制器、2D GPU、DVO显示接口、两路PClE2.0、两路SATA2.0、四路USB2.0、一路…

浏览器HTTP缓存解读(HTTP Status:200 304)

为什么要有浏览器缓存&#xff1f; 浏览器缓存(Brower Caching)是浏览器对之前请求过的文件进行缓存&#xff0c;以便下一次访问时重复使用&#xff0c;节省带宽&#xff0c;提高访问速度&#xff0c;降低服务器压力 http缓存机制主要在http响应头中设定&#xff0c;响应头中…