• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    postgresql 删除重复数据案例详解

    1.建表

    /*
     Navicat Premium Data Transfer
    
     Source Server         : localhost
     Source Server Type    : PostgreSQL
     Source Server Version : 110012
     Source Host           : localhost:5432
     Source Catalog        : postgres
     Source Schema         : public
    
     Target Server Type    : PostgreSQL
     Target Server Version : 110012
     File Encoding         : 65001
    
     Date: 30/07/2021 10:10:04
    */
    
    
    -- ----------------------------
    -- Table structure for test
    -- ----------------------------
    DROP TABLE IF EXISTS "public"."test";
    CREATE TABLE "public"."test" (
      "id" int4 NOT NULL DEFAULT NULL,
      "name" varchar(255) COLLATE "pg_catalog"."default" DEFAULT NULL,
      "age" int4 DEFAULT NULL
    )
    ;
    
    -- ----------------------------
    -- Records of test
    -- ----------------------------
    INSERT INTO "public"."test" VALUES (1, 'da', 1);
    INSERT INTO "public"."test" VALUES (2, 'da', 12);
    INSERT INTO "public"."test" VALUES (3, 'dd', 80);
    INSERT INTO "public"."test" VALUES (4, 'dd', 80);
    INSERT INTO "public"."test" VALUES (5, 'd1', 13);
    
    -- ----------------------------
    -- Primary Key structure for table test
    -- ----------------------------
    ALTER TABLE "public"."test" ADD CONSTRAINT "test_pkey" PRIMARY KEY ("id");
    
    

    2.根据名称获取重复

    先看看哪些数据重复了

    select name ,count(1)  from test group by name  having count(1)>1
    

    输出.

    name        count

    da              2

    dd              2

    3.删除所有重复数据

    注意把要更新的几列数据查询出来做为一个第三方表,然后筛选更新。

    delete from test where name in (select t.name from (select name ,count(1)  from test group by name  having count(1)>1) t)
    

    4.保留一行数据

    这里展示我们需要保留的数据:重复数据,保留ID最大那一条

    SELECT
     1. 
    FROM
     test 
    WHERE
     id NOT IN (
     ( SELECT min( id ) AS id FROM test GROUP BY name ) 
     )
    

    5.删除数据

    DELETE 
    FROM
     test 
    WHERE
     id NOT IN (
     SELECT
      t.id 
     FROM
     ( SELECT max( id ) AS id FROM test GROUP BY name ) t 
     )
    

    到此这篇关于postgresql 删除重复数据案例详解的文章就介绍到这了,更多相关postgresql 删除重复数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • postgresql 删除重复数据的几种方法小结
    • PostgreSQL 删除check约束的实现
    • postgresql删除主键的操作
    • PostgreSQL 实现快速删除一个用户
    • postgresql 实现多表关联删除
    • Postgresql创建新增、删除与修改触发器的方法
    • PostgreSQL删除更新优化操作
    • mybatis postgresql 批量删除操作方法
    上一篇:PostgreSQL解析URL的方法
    下一篇:postgresql查询自动将大写的名称转换为小写的案例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    postgresql 删除重复数据案例详解 postgresql,删除,重复,数据,