您正在使用IPV4(3.215.177.171)访问本站 您本次共访问本站 1 次
用户名: 用QQ登录本站
密 码:
验证码:
首页 软件 编程 笑话 知识 公告 台风 日历 计算器 行情 简化版
文明驾车我带头,文明行路我带头,礼貌让座我带头      

【腾讯云】云产品限时秒杀,爆款1核2G云服务       [公益] 节省一分零钱 献出一份爱心 温暖世间真情      
虚位以待
2021年 国庆节 7
2021年 重阳节 20
2022年 元 旦 99
2022年 春 节 130
 
  • 本类新增
    本类热门文章
    您现在的位置:首页 >> 数据库 >> 内容
    postgresql 删除重复数据案例详解
    内容摘要: 1.建表/*NavicatPremiumDataTransferSourceServer:localhostSourceServerType:PostgreSQLSourceServerVersion:110012SourceHost:localhost:5432SourceCatalog:postgresSourceSchema:publicTargetS......
    1.建表

    /*

    NavicatPremiumDataTransfer


    SourceServer:localhost

    SourceServerType:PostgreSQL

    SourceServerVersion:110012

    SourceHost:localhost:5432

    SourceCatalog:postgres

    SourceSchema:public


    TargetServerType:PostgreSQL

    TargetServerVersion:110012

    FileEncoding:65001


    Date:30/07/202110:10:04

    */



    ------------------------------

    --Tablestructurefortest

    ------------------------------

    DROPTABLEIFEXISTS"public"."test";

    CREATETABLE"public"."test"(

    "id"int4NOTNULLDEFAULTNULL,

    "name"varchar(255)COLLATE"pg_catalog"."default"DEFAULTNULL,

    "age"int4DEFAULTNULL

    )

    ;


    ------------------------------

    --Recordsoftest

    ------------------------------

    INSERTINTO"public"."test"VALUES(1,'da',1);

    INSERTINTO"public"."test"VALUES(2,'da',12);

    INSERTINTO"public"."test"VALUES(3,'dd',80);

    INSERTINTO"public"."test"VALUES(4,'dd',80);

    INSERTINTO"public"."test"VALUES(5,'d1',13);


    ------------------------------

    --PrimaryKeystructurefortabletest

    ------------------------------

    ALTERTABLE"public"."test"ADDCONSTRAINT"test_pkey"PRIMARYKEY("id");

    2.根据名称获取重复

    先看看哪些数据重复了

    selectname,count(1)fromtestgroupbynamehavingcount(1)>1

    输出.


    namecount


    da2


    dd2


    3.删除所有重复数据

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

    deletefromtestwherenamein(selectt.namefrom(selectname,count(1)fromtestgroupbynamehavingcount(1)>1)t)

    4.保留一行数据

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

    SELECT

    1.

    FROM

    test

    WHERE

    idNOTIN(

    (SELECTmin(id)ASidFROMtestGROUPBYname)

    )

    5.删除数据

    DELETE

    FROM

    test

    WHERE

    idNOTIN(

    SELECT

    t.id

    FROM

    (SELECTmax(id)ASidFROMtestGROUPBYname)t

    )

    版权声明:本内容来源于脚本之家,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
    上一篇:sql DATEDIFF()查询当天当月当年内所有数 下一篇:PostgreSQL判断字符串是否包含目标字符串的多
    发布日期:2021/8/18
    手机扫二维码直达本页
    发布时间:10:30:35
    点击:431
    录入:伊伊
    相关文章
    Baidu
    YiJiaCMS V6.0.1 Build 21.9.2(MSSQL) 闽ICP备05000814号-1
    本空间由景安网络提供,百度云加速提供加速防护
    ©2000-2021