从数据库中删除重复项的脚本[关闭]

2024-02-26

我有一个数据库,其中有电话号码、组织、公司名称、邮政编码等数据。

我的数据库中也有一些重复项,例如相同的公司名称、相同的组织、相同的邮政编码但不同的相同电话号码。所以我想通过使用脚本删除这些重复项。我怎样才能写出这样的脚本?

CREATE TABLE TEST (
    address_id        bigint,
    name              varchar(255),
    marketing_name    varchar(255),
    co_address        varchar(255),
    box_address1      varchar(255),
    box_address2      varchar(255),
    box_postal_code   varchar(45),
    visit_address1    varchar(255),
    org_nr            varchar(255),
    visit_postal_code varchar(255),
    county_id         varchar(255),
    contact           varchar(255),
    complete          tinyint,
    deleted           tinyint,
    district_id       varchar(255),
    region            varchar(255),
    phone1            varchar(255),
    mobile_phone      varchar(255),
)

首先,您需要决定要使用的重复标准是什么。例如,我想检查同一组织名称、公司名称和邮政编码中的电话号码是否重复。我可以做这个:

第一个测试表

CREATE TABLE TEST
(
id int,
phonenumber int,
orgno int,
companyname varchar(100),
postalcode varchar(4)
)

然后测试数据

  insert into TEST
 values (1,4533660,1,'COMPANY 1',1234)
  insert into TEST
 values (2,4533660,1,'COMPANY 1',1234)
  insert into TEST
 values (3,954189547,1,'COMPANY 2',4444)
   insert into TEST
 values (4,954189547,1,'COMPANY 2',4444)
   insert into TEST
 values (5,3652591,1,'COMPANY 3',4444)
   insert into TEST
 values (6,4201580,1,'COMPANY 4',4444)
   insert into TEST
 values (7,3337788,1,'COMPANY 5',4444)

最后,使用选定的条件查询重复项。

 Select phonenumber,
 orgno,
 companyname,
 postalcode,
 COUNT(*)
 from test 
 group by phonenumber,
 orgno, 
 companyname,
 postalcode 
 HAVING COUNT(*) > 1

通过此查询,您可以轻松找到重复项,最重要的是检查重复项的条件。

Edit

如果要删除除 1 之外的所有重复行,可以这样做:

DELETE A
FROM TEST A 
INNER JOIN 
(
        SELECT ROW_NUMBER()OVER(PARTITION BY a.phonenumber,
        a.orgno,
        a.companyname,
        a.postalcode ORDER BY a.id)AS POS,
        a.phonenumber,
        a.orgno,
        a.companyname,
        a.postalcode,
        a.id
        FROM TEST A
        JOIN 
        (
                SELECT  
                phonenumber,
                orgno,
                companyname,
                postalcode,
                COUNT(*) AS CONTADOR
                FROM test 
                GROUP BY phonenumber,
                orgno, 
                companyname,
                postalcode
                HAVING COUNT(*) > 1
        ) TB
        ON A.companyname = TB.companyname 
        AND A.orgno = TB.orgno 
        AND A.phonenumber = TB.phonenumber 
        AND A.postalcode = TB.postalcode
) TB_2
ON
a.id = tb_2.id 
and tb_2.pos > 1

使用提供的数据结构编辑脚本。

DELETE FROM TEST B
JOIN 
(
    SELECT ROW_NUMBER()OVER(PARTITION BY
    a.org_nr,
    a.phone1,
    a.phone2,
    a.name,
    a.marketing_name
    ORDER BY 
    a.org_nr,
    a.phone1,
    a.phone2,
    a.name,
    a.marketing_name
    )AS POS,
    a.address_id,
    a.org_nr,
    a.phone1,
    a.phone2,
    a.name,
    a.marketing_name
    FROM TEST A
    JOIN 
    (
        SELECT 
        org_nr,
        phone1,
        phone2,
        name,
        marketing_name
        FROM TEST 
        GROUP BY 
        org_nr,
        phone1,
        phone2,
        name,
        marketing_name
        HAVING COUNT(*) > 1) TB
        ON a.org_nr = tb.org_nr
        and a.phone1 = tb.phone1
        and a.phone2 = tb.phone2
        and a.name = tb.name
        and a.marketing_name = tb.marketing_name
    ) TB_2
ON
b.address_id = tb_2.address_id
and tb_2.pos > 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从数据库中删除重复项的脚本[关闭] 的相关文章

随机推荐

  • R Shiny:ggplot 中的facet_wrap 问题

    我正在尝试使用创建两个并排饼图facet wrap in ggplotR 上闪亮 这是我目前拥有的代码 output plot2 lt renderPlot if input type Pie Chart ggplot shortlistp
  • 我该如何修复这个错误? Gtk-警告 **:GModule ...初始化检查失败:GLib 版本太旧(微不匹配)

    我正在使用 matplotlib 编写 python 程序 但收到此错误 GLib GIO Message 使用 内存 GSettings 后端 您的设置不会被保存或与其他应用程序共享 python 6304 Gtk 警告 GModule
  • 在Xcode中调试时自动打开终端?

    在 Xcode 中调试可执行文件时 我经常需要打开终端窗口 导航到可执行文件的工作目录并在那里执行一些操作 有没有办法让 Xcode 在每次调试程序时自动在此位置打开终端窗口 对于仍在寻找的人来说 这真的很简单 假设您想单击 运行 并让应用
  • Android studio 1.0不显示drawable-hdpi,drawable-xhdpi,drawable-mdpi,drawable-xxhdpi

    当我创建一个新项目时 我的Android studio 1 0不显示drawable hdpi drawable xhdpi drawable mdpi和drawable xxhdpi 我不知道原因 这是我的 res 目录结构 res 可绘
  • 将 Pros 从 State 传递给 Child

    我正在从父 React 组件上的 componentDidMount 中的 Web API 调用获取数据 我将这些值放入状态中 当我渲染表单时 我只是使用数据 组件 制作自定义标签 并将标签文本和数据传递给该组件 我显示的每个字段都有一个
  • 错误连接被拒绝

    我想与我自己的 servlet 建立 Http 连接 这是我的代码 try HttpClient client new DefaultHttpClient HttpPost httpMethod new HttpPost http loca
  • R Shiny 如何引用属于动态输入数量一部分的输入

    因此 我需要制作一个闪亮的应用程序 它需要动态数量的输入来最终进行降维 但是当我有动态数量的输入时 我一直试图弄清楚如何引用输入中的内容 我使用的是 iris 数据集 输入是变量 我需要做的一部分是用 k 均值绘制其中的 2 个图 但我只是
  • 与 BEM 类命名约定混淆。更深一层

    例如 我有一个带有菜单元素的菜单块 menu menu element menu element current 但可以说 menu块包含在另一个块内 header 在这种情况下如何处理命名 header header menu heade
  • 在 Google App Engine 中关闭区分大小写的 URL

    我们最近将公司网站迁移到了 Google 应用引擎 我们网站中的某些链接遇到了区分大小写的问题 当服务器上的相应文件夹为小写时 某些链接为大写 这在我们的旧 Windows 服务器上不是问题 Google 应用引擎似乎对 URL 区分大小写
  • ASP.Net Web API 帮助页面区域返回空输出

    我有一个预先存在的 MVC 应用程序 我使用 Nuget 添加了 Web API 和 Web API 自文档 虽然 Web API 控制器运行良好 返回对 HTTP 请求的有效响应 但帮助控制器找不到任何要记录的 Web API 方法 在帮
  • log4net 通过异常参数向数据库表添加完整的堆栈跟踪

    对于 log4net 配置 这是我的参数设置
  • Mustache.js - 如何连接事件?

    我正在考虑将 Mustache js 用于我正在开发的一个小项目 我还没有看到答案的一件事是 哪种是连接事件的最佳方法 我想要创建一个带有小胡子的树形菜单 但我不认为哪种是将事件连接到每个节点的最佳或最干净的方法 Mustache是 一个模
  • 打印时,如果图像大于单个打印页面,Firefox 会截断/裁剪图像,如何禁用此行为?

    如果网页上的图像超过单个打印页面的高度 则打印时图像的下半部分会被 Firefox 剪切 裁剪 例如在打印预览中查看 这种情况在 Chrome 中不会发生 也可能不会在 IE 中发生或者 不确定 Opera 和其他 如何禁用此剪切 裁剪并在
  • Django:注册期间有效/可用的用户名/电子邮件的ajax响应

    我正在使用 jQuery 在用户注册期间进行一些内联 表单验证 以通过检查是否存在以下方式来防止发布后出现表单错误 用户名可用 电子邮件尚未注册 其想法是在提交表单之前向用户提供反馈 以防止用户感到沮丧 代码在底部 问题 这是一个潜在的安全
  • Django Rest 框架 - 从 json 创建或更新值

    我对 Django 和 Django Rest Framework 非常陌生 我有一个API 其json格式如下 为了简单起见 简化版本 title Lorem ipsum is a dummy title content Lorem ip
  • Powershell返回包含特定文件但不完全递归的目录

    使用以下 Powershell 代码 我尝试找到根目录中不包含 robots txt 的文件夹 通常 我可以递归地执行此操作 但递归这个庞大的文件夹结构需要很长时间 我真正需要的只是第一级 即仅搜索 C Projects 中找到的文件夹 基
  • 另一个失败的 Twitter oAuth cURL 访问令牌请求

    以下函数给出验证错误而不是令牌 无法验证 oAuth 签名和令牌 function request token Set url url this gt site this gt request token path http api twi
  • Spring Integration Kafka 适配器不生成消息

    我已经为此苦苦挣扎好几天了 我在 Spring boot 容器下使用 kafka 的 SI 适配器 我已经在我的机器上配置了zookeeper和kafka 我还创建了控制台生产者和消费者对其进行了测试 一切正常 我设法生成控制台消息并让控制
  • 如何克隆 JavaScript 类实例?

    如何克隆 JavaScript 类实例 我尝试了普通的 jQuery 扩展 但它只返回一个普通对象 我已经查看了堆栈上的许多其他答案 但找不到如何克隆实例 function Parent name this name name Parent
  • 从数据库中删除重复项的脚本[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个数据库 其中有电话号码 组织 公司名称 邮政编码等数据 我的数据库中也有一些重复项 例如相同的公司名称 相同的组织 相同的邮政