最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
postgresql删除重复数据代码实例解析
时间:2022-06-29 10:19:43 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下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 )
相关文章
- 网红张雪峰死亡为何霸榜热搜,全平台哀悼?这个人是谁?干嘛的? 03-25
- 张雪峰猝死了真的假的?网传张雪峰猝死了是怎么回事? 03-25
- 张雪峰是干嘛的?张雪峰因为什么走红?心源猝紧该怎么急救? 03-25
- 张雪峰死亡原因揭秘:急速运动心源猝死 03-25
- 张雪峰今年多大呀?怎么会突然猝死了? 03-25
- 张雪峰死了真的假的?张雪峰死亡原因揭秘 03-25