从小表中删除重复行

2023-12-31

我在 PostgreSQL 8.3.8 数据库中有一个表,该表没有键/约束,并且有多行具有完全相同的值。

我想删除所有重复项并仅保留每行的 1 个副本。

特别有一列(名为“key”)可用于识别重复项,即每个不同的“key”应该只存在一个条目。

我怎样才能做到这一点? (理想情况下,使用单个 SQL 命令。)
在这种情况下,速度不是问题(只有几行)。


更快的解决方案是:

  • 找到第一次出现的重复项,
  • 然后删除所有不是第一次重复出现的行。

这看起来如下所示:

DELETE FROM dups a USING (
    SELECT MIN(ctid) as ctid, key
    FROM dups 
    GROUP BY key HAVING COUNT(*) > 1
) b
WHERE a.key = b.key 
AND a.ctid <> b.ctid

请注意,使用此解决方案您无法控制保留哪一行。

玩具示例

CREATE TABLE people (
    name    varchar(50) NOT NULL,
    surname varchar(50) NOT NULL,
    age     integer NOT NULL
);

INSERT INTO people (name, surname, age) VALUES 
    ('A.', 'Tom', 30),
    ('A.', 'Tom', 10),
    ('B.', 'Tom', 20),
    ('B', 'Chris', 20);

-- The inner command to find duplicates first occurences:
SELECT MIN(ctid) as ctid, name, surname
FROM people 
GROUP BY (name, surname) HAVING COUNT(*) > 1;


DELETE FROM people a USING (
    SELECT MIN(ctid) as ctid, name, surname
    FROM people 
    GROUP BY (name, surname) HAVING COUNT(*) > 1
) b
WHERE a.name = b.name
AND a.surname = b.surname
AND a.ctid <> b.ctid;

SELECT * FROM people;

内部请求输出:

ctid name surname
(0,1) A. Tom

最终请求(删除后)输出:

name surname age
A. Tom 30
B. Tom 20
B Chris 20

查看 DB Fiddle 上的玩具示例 https://www.db-fiddle.com/f/4jyoMCicNSZpjMt4jFYoz5/8761

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从小表中删除重复行 的相关文章

  • Linq lambda表达式多对多表选择

    我有三个表 其中两个是多对多关系 Picture 这是中间mm表中的数据 Edit 到这里 我得到正确的 4 行返回 但它们都是相同的结果 我知道我需要返回 4 行 但有不同的结果 return this mediaBugEntityDB
  • SQL如何显示某个日期之前的数据

    我有几张桌子 一个是一个工人表显示工人代码 名字和姓氏 工作日期其中显示工人代码 工作开始日期 结束日期和工作区域代码 导师有工人编号 名字 姓氏和工作区号 Job area有工作区域代码名称和主管 我想要做的是在日期 10 09 10 之
  • 如何在 SQL 中选择“上一条”和“下一条”记录?

    I am building a blog post detail page on my site that will display display a previous and next link similar to how a typ
  • 如何在 SQL 中进行广度优先搜索?

    给定一棵存储为关系的树 Parent Child 1 2 1 3 3 4 3 5 2 6 7 8 7 9 如何获取给定节点的所有后代 例如 对于 1
  • SQL注入方法

    注射程序是 SELECT UserId Name Password FROM Users WHERE UserId 105 or 1 1 但是 我的问题是注入查询在 sql 中是如何工作的 当你在代码中将查询作为字符串时 就像这样 Quer
  • SQL 中的代码重用和模块化

    代码重用和模块化对于 SQL 存储过程编程来说是一个好主意吗 如果是这样 将这些功能添加到 SQL 存储过程代码库的最佳方法是什么 我通常为常见且重复的任务创建标量值函数 我发现它不仅可以简化与现有程序类似的新程序的开发 而且还有助于错误跟
  • 对 SQL 时间序列进行采样

    我有一个日期时间的时间序列 存储在 mySQL 中的双列 并且希望每分钟对时间序列进行采样 即以一分钟的间隔提取最后一个值 有没有一种有效的方法可以在一个 select 语句中执行此操作 蛮力方法将涉及选择整个系列并在客户端进行采样或为每个
  • 金融 - 计算到期收益率

    我读了this https stackoverflow com questions 1173555 open source financial library specifically yield to maturity发布关于 net 库
  • sql查询中case语句中的布尔值

    我在选择查询中使用 case 语句 类似这样 Select col1 col2 isActive case when col3 abc then 1 else 0 end col4 from
  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • 选择每组最新的项目[重复]

    这个问题在这里已经有答案了 可能的重复 检索每组中的最后一条记录 https stackoverflow com questions 1313120 retrieving the last record in each group 我有 2
  • 查询从同一表中的另一条记录获取值并按大于间隙阈值的差异进行过滤

    我将数据导入到 MS Access 中的临时表中 如下所示 我添加了需要使用 SQL 查询计算的 Gap 和 Previous Current 列 间隙阈值 是用户输入或范围提供给查询和例如是 300 GlobalID 对 ItemID 进
  • Laravel 7.x eloquent addSelect 子查询来计数

    与 一起工作Laravel 7 x and Postgresql 我有一个User类和GroupPivot数据透视表 可以对多个模型进行分组 我想创建一个专栏User如果用户拥有针对该组的当前数据透视条目 则为 true 或 false 类
  • 列“users.id”必须出现在 GROUP BY 子句中或在聚合函数中使用

    关系 Item belongs to Product Product belongs to User 项目型号范围 scope search gt search term select products name users product
  • SQL查询获取最后两条记录的DateDiff

    我有一个名为 Event 的表 其中 eventNum 作为主键 日期作为 SQL Server 2008 R2 中的 datetime2 7 我试图获取表中最后两行的日期并以分钟为单位获取差异 这就是我目前所拥有的 Select DATE
  • 尚未为此带有 SQL Server 的 DbContext .NET Core 配置数据库提供程序

    我一直用这个把头撞在墙上 并且一直在谷歌上搜索无济于事 我刚刚开始一个新的 ASP NET Core MVC 项目 我已将这两个包安装 更新为 2 2 0 Microsoft EntityFrameworkCore SqlServer Mi
  • If Else 条件的 SQLite 语法

    我正在使用 SQLite 数据库 我的表有一个名为 密码 的文本列 早些时候 为了检索我用来执行简单操作的值select from myTable询问 但现在的要求是 如果Password值不是NULL那么我需要将其显示为 是 或 否 它是
  • Solr 增量导入不起作用

    我使用的是solr 4 2 请注意 完全导入有效 但增量导入却无效 增量导入不会给出任何错误 但不会获取任何更改 这是数据配置文件
  • 常量值如何影响连接的 ON 子句?

    我最近发现 LEFT JOIN 的 ON 子句可能包含 1 1 等值 这让我感到不安 因为它打破了我对连接功能的看法 我遇到过以下情况的更详细版本 SELECT DISTINCT Person ID FROM Person LEFT JOI
  • 将 CSV 复制到 Amazon RDS 托管的 Postgresql 数据库

    我有一个使用 Amazon 的 RDS 服务托管的数据库 我正在尝试编写一个 Web 服务来更新所述数据库 我遇到的问题是它不允许我使用 COPY 命令 因为我收到此错误 错误 必须是超级用户才能复制到文件或从文件复制 我正在使用我为数据库

随机推荐

  • TPL DataFlow处理异常的正确方法

    我在使用 TPL DataFlow 管理队列 数据库 并将工作重定向到网格计算服务的 Windows 服务中遇到问题 在某一时刻 BufferBlock 停止释放任务 我不知道为什么 我认为这是因为在执行某些任务期间发生了一些异常 但它们被
  • Laravel 基本 HTTP 身份验证检查返回 False

    我使用 Laravel 中提供的基本 HTTP 身份验证来登录我的网站 然而 当我打电话时Auth Check 我总是得到false即使我已登录 也会得到响应 Does Auth Check 不适用于基本身份验证模型 如果不能 是否有任何方
  • 函数返回 Ajax 响应 - 值未定义? jQuery Ajax [重复]

    这个问题在这里已经有答案了 当我警告 jsonServerResponse 函数返回的值时 它的值是未定义的 尽管 JSON 是从 process php 页面返回的 function jsonServerResponse operatio
  • nginx:access.log 和 error.log 文件为空

    我刚刚使用命令在 Ubuntu 14 04 上安装了 nginx sudo apt get install nginx 现在 当我打开浏览器并输入地址时localhost然后我正确地显示了 欢迎来到 nginx 页面 另外 我检查了位于的配
  • Firebase 数据库未找到类错误 (NoClassDefFoundError)

    我有一个使用多个子模块的大型项目 我已将 firebase 数据库依赖项添加到我的项目中包含的模块之一 当本地测试模块作为开放项目包含时 一切正常 当使用封闭模块构建时 我的模块是aar文件 我收到以下错误 java lang NoClas
  • 如何重命名 WordPress 管理仪表板上的 WooCommerce 选项卡下的菜单选项卡

    我需要帮助重命名 WordPress 管理上 woocommerce 选项卡下的选项卡菜单项 我们安装了一个插件 该插件显示为 woocommerce 选项卡上的子菜单 有人可以帮我解决这个问题吗 我发现下面的代码可以重命名选项卡菜单 但我
  • 属性不应返回数组

    是的 我知道这个问题之前已经讨论过很多次了 我阅读了有关这个问题的所有帖子和评论 但似乎仍然无法理解一些东西 MSDN 提供的解决此违规问题的选项之一是返回收藏 or an 界面这是由一个实现的收藏 在访问该属性时 无论它多么明显并不能解决
  • Flex 默认规则

    如何自定义 Flex 的默认操作 我发现类似 的内容 但当我运行它时 它显示 柔性扫描仪卡住 还有 规则仅添加一条规则 因此它也不起作用 我想要的是 comment comment return 1 default return 0 lt
  • &'a T 是否意味着 T: 'a?

    从我自己的理解和实验来看 这似乎是正确的 但我还没有找到记录它的权威来源 Rust by Example 有一个bounds https doc rust lang org rust by example scope lifetime li
  • Google Play 中不允许使用 com.example 包名称

    我是 Android 应用程序开发新手 我正在创建简单的 Android 应用程序 导出 android 应用程序并将包名称指定为AndroidManifestfile包名为 com example zingyminds apk 现在我得到
  • 使用 FFT 进行高斯图像滤波

    对于图像分割 我使用 OpenCV 的高斯特征差异GaussianBlur 范围从 0 8 到 8 43 指数步长为 1 4 我的图像尺寸为 4096 x 2160 因此这需要相当长的时间 在一个核心上需要 8 秒 这在处理视频时相当长 您
  • 如何更改活动/选定选项卡的颜色?

    我希望当未选择选项卡时颜色为默认灰色 但作为我的颜色tabBarColor选择选项卡时的颜色 我找不到更改标签栏中标题颜色的方法 我怎样才能做到这一点 这是我的代码 Home screen TabNavigator Home screen
  • lub(T1,...Tn) 是什么意思?

    以下引用来自 JLS 14 20 http docs oracle com javase specs jls se8 html jls 14 html jls 14 20 异常参数的声明类型 将其类型表示为 与替代方案 D1 的结合D2 D
  • OpenCV 霍​​夫圆

    我使用 Xcode 和 c 我已经从以下位置复制了 HoughCircles 代码OpenCV 文档 http opencv willowgarage com documentation cpp feature detection html
  • 在 SageMath 中运行时使用 Dask 会抛出 ImportError

    最近 我一直在尝试使用 Dask 并行化一些 Sage 运行 OSX 11 2 3 的 MacBook Pro 上的 Sage 9 4 代码 我遇到的问题是 虽然我可以在 Sage 中运行 Dask 但每当我包含任何非 纯 python 代
  • 我们可以将事件侦听器添加到“Vega-Lite”规范吗?

    我是 Vega 和 Vega Lite 的新手 我正在使用 Vega Lite 创建一个简单的条形图 但我无法添加任何事件侦听器 例如 徘徊 我想将鼠标悬停在一个栏上并更改该栏的颜色 如果您正在使用Vega嵌入 https github c
  • 如何收到图库应用程序可见的每个新图像的通知?

    背景 当用户下载新图像或使用相机捕获图像时 图库应用程序将更新以显示新图像 我需要在创建每个新图像后立即收到通知 无论它是如何创建的 相机 浏览器 就像图库应用程序所示 问题 事实证明 有一个 mediaScanner Android 组件
  • Curl:传输已关闭,剩余未完成的读取数据

    我遇到了大卷曲调用的问题 I get nread 传输已关闭 剩余未完成的读取数据 并且内容已部分交付 GET stats stats breakdown track track campaign search criteria 2 per
  • 无法生成用于构建和调试的资产。 OmniSharp 服务器未运行

    在 Visual Studio VS Code 上 使用 C 进行编码 我正在尝试生成要构建和调试的资产 但收到以下错误消息 无法生成用于构建和调试的资产 OmniSharp 服务器未运行 我在跑 NET版本3 1 301 视窗8 1 Vi
  • 从小表中删除重复行

    我在 PostgreSQL 8 3 8 数据库中有一个表 该表没有键 约束 并且有多行具有完全相同的值 我想删除所有重复项并仅保留每行的 1 个副本 特别有一列 名为 key 可用于识别重复项 即每个不同的 key 应该只存在一个条目 我怎