Mysql 删除重复数据保留一条有效数据_mysql去重复 保留一条-程序员宅基地

技术标签: 蕃薯耀  删除重复数据  mysql  保留ID最小的数据  蕃薯耀分享  数据库  

==============================

Copyright 蕃薯耀 2023-01-31

蕃薯耀的博客_程序员宅基地-蕃薯耀分享,java,js领域博主

一、Mysql 删除重复数据,保留一条有效数据

DELETE FROM SZ_Building WHERE id NOT IN (
  SELECT t.min_id FROM (
    SELECT MIN(id) AS min_id FROM SZ_Building GROUP BY BLDG_NO
  ) t
)
;

原理:

  1. 根据字段对数据进行分组,查询出所有分组的最小ID(即要保留的不重复数据)
  2. 将查询出来的数据(所有不重复的数据)存放到临时表中
  3. 从原来的表中删除ID不在临时表中的重复数据

当表的数据量达到百万级以上时,删除数据很慢,建议这样处理:

  • 先把min(id)存到临时表(SZ_Building_id):
create table SZ_Building_id
SELECT MIN(id) AS id FROM SZ_Building GROUP BY BLDG_NO
;
  • 给临时表的id设置成主键或者创建索引(加快后面的查询速度)
alter table add index ind_xxName(字段名:如ID);
  • 删除id不在临时表的数据。
delete from ​SZ_Building where id not in(
  select id from SZ_Building_id
)
;

二、Mysql 删除重复数据(多个字段分组)

DELETE FROM SZ_Water_Level WHERE id NOT IN (
  SELECT t.min_id FROM (
    SELECT MIN(id) AS min_id FROM SZ_Water_Level GROUP BY CZBM,SJ,SW
  ) t
)
;

三、Mysql 查询出可以删除的重复数据

SELECT * FROM SZ_Building WHERE id NOT IN (
  SELECT t.min_id FROM (
    SELECT MIN(id) AS min_id FROM SZ_Building GROUP BY BLDG_NO
  ) t
)
;

SELECT * FROM SZ_Building WHERE BLDG_NO IN (
	SELECT BLDG_NO FROM SZ_Building GROUP BY BLDG_NO HAVING COUNT(1)>1
) 
AND id NOT IN (
	SELECT MIN(id) FROM SZ_Building GROUP BY BLDG_NO HAVING COUNT(1)>1
)
;

 ==============================

Copyright 蕃薯耀 2023-01-31

蕃薯耀的博客_程序员宅基地-蕃薯耀分享,java,js领域博主

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w995223851/article/details/128816753

智能推荐

【多径衰落仿真】基于matlab模拟小尺度多径衰落Jakes模型-程序员宅基地

文章浏览阅读976次,点赞15次,收藏28次。小尺度多径衰落Jakes模型概述:Jakes模型是一种用于模拟小尺度多径衰落的统计模型,广泛应用于无线通信系统中。Jakes模型假设信号在传播过程中经历了多个独立且随机的散射体,每个散射体都会对信号产生不同的时延和幅度衰减。Jakes模型的输出是一个复数随机过程,其幅度服从瑞利分布,相位服从均匀分布。Jakes模型的数学表达式:Jakes模型的应用:Jakes模型广泛应用于无线通信系统中,用于模拟小尺度多径衰落信道。Jakes模型可以用于评估无线通信系统的性能,例如误码率、容量和覆盖范围。

队列实现杨辉三角(附详细图解)_杨辉三角的行列之间存在一定的规律,请编写一组基于队列的程序,实现杨辉三角形的打-程序员宅基地

文章浏览阅读1.2w次,点赞46次,收藏161次。之前我已经写了两篇关于队列的基本功能,今天我们使用循环顺序队来实现输出杨辉三角。这是我们最终想要的效果:*目录算法思路代码实现思考总结算法思路这里我将使用图示法配合文字。代码实现关于代码,这里只展示核心部分。其他关于入栈,出栈,初始化的操作请移步我之前的文章。附上链接:顺序队与链队(一)#include"SqQueue.h"void test(){ SQ s; s.SQInit(); //杨辉三角的过程 int line = 7;//杨辉三角的行数 int val_杨辉三角的行列之间存在一定的规律,请编写一组基于队列的程序,实现杨辉三角形的打

[解决方案] VNC Viewer 连接灰屏问题 (能够连接上,但全是灰点,没有任何菜单、按钮,鼠标变为x)_vnc灰色无画面叉-程序员宅基地

文章浏览阅读2.9w次,点赞12次,收藏59次。[解决方案] VNC Viewer 连接灰屏问题 (能够连接上,但全是灰点,没有任何菜单、按钮,鼠标变为x)情况1情况2情况3情况1登陆VNCviewer可能会发现服务器的mate桌面为灰色,没有任何图标,如下所示:解决方案因此,需要先杀死端口再重开。杀死端口号:vncserver -kill :xx重开端口号:vncserver :xxps: xx是分配给你的端口号,比如30pps: 注意这里-kill之后需要加空格如果正常出现以下提示信息则说明操作正常,端口号正常。之后,再去试试VN_vnc灰色无画面叉

vim命令-程序员宅基地

文章浏览阅读529次。vim

致远OA ucpcLogin密码重置(可组合拳GetShell)_致远oa ucpclogin密码重置(可组合拳getshell)-程序员宅基地

文章浏览阅读605次,点赞4次,收藏6次。请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。_致远oa ucpclogin密码重置(可组合拳getshell)

.py文件转换成.pyc文件_.py生成pyc文件-程序员宅基地

文章浏览阅读1k次。pyc介绍pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高。而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的。使用通过自带模块py_compile进行1、将单个文件转换成pyc文件用如下代码import py_compilepy_compile.compile('t_.py生成pyc文件

随便推点

AES/ECB/PKCS5Padding/PKCS7Padding 128位密钥(带密钥补位功能)加密解密-程序员宅基地

文章浏览阅读4.4w次,点赞8次,收藏27次。今天客户说发解密算法过来,本来以为拿来的是代码直接用,没想到就直接给了我个网站http://www.seacha.com/tools/aes.html和他们用的算法模式+密钥。以前还真没玩过AES加密解密,下面是今天研究的结果。实现结果:算法:AES模式:ECB密钥长度:128位密钥:自己填(代码中带补位功能)补码方式:PKCS5Padding/PKCS7P_aes/ecb/pkcs5padding

opencv基础44- Canny边缘检测详解-cv.Canny()-程序员宅基地

文章浏览阅读6.9k次,点赞6次,收藏39次。Canny边缘检测是一种经典的边缘检测算法,由John F.Canny在1986年提出。它被广泛应用于计算机视觉和图像处理领域,是一种多阶段的边缘检测算法,能够有效地检测图像中的边缘并抑制噪声。Canny边缘检测的主要步骤如下:噪声抑制:首先,通过使用高斯滤波器对图像进行平滑处理,以去除图像中的噪声。高斯滤波器可以有效地平滑图像,同时保持边缘的细节。计算梯度幅值和方向:使用Sobel算子计算图像中每个像素点的水平和垂直方向的梯度值。然后,根据梯度值计算每个像素点的梯度幅值和方向。_canny边缘检测

vue3和vite双向加持,uni-app性能再次提升_uniapp vue3 vite-程序员宅基地

文章浏览阅读4.5k次。uni-app全平台支持vite编译及vue3运行,编译性能、运行性能、语法支持均有大幅改进,快来看看详细评测数据。_uniapp vue3 vite

【华为OD机试考生抽中题 B卷】数字序列比大小,用 C 编码,速通_数字序列比大小 od-程序员宅基地

文章浏览阅读1w次。A,B两个人玩一个数字比大小的游戏,在游戏前,两个人会拿到相同长度的两个数字序列,两个数字序列不相同的,且其中的数字是随机的。A,B各自从数字序列中挑选出一个数字进行大小比较,赢的人得1分,输的人扣1分,相等则各自的分数不变。1、这里要求计算A可能赢B的最大分数,不妨假设,A知道B的数字序列,且总是B先挑选数字并明示。输入数据的第1个数字表示数字序列的长度N,后面紧跟着两个长度为N的数字序列。输入数据第1个数字表示数字序列长度为3,后面紧跟着两个长度为3的数字序列。求A可能赢B的最大分数。_数字序列比大小 od

【Kettle-ERROR】ETL工具-Kettle连接MySQL报错及解决方案_kettlekettle连接mysql数据库成功,但获取不到表名-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏2次。1.驱动问题在kettle中新建mysql连接时,一般都选择Native(JDBC)方法,这时需要下载与MySQL版本对应的connector连接jar包,放在kettle安装目录的 data-integration\lib下;低版本的MySQL数据库按这种方法一般没问题,但是mysql 8.0以上connector已经不再支持这个包名,所以会出现已经将mysql-connector-java-8.0.xx.jar包拷贝到lib目录下,但还是报错说找不到驱动。报错如下:错误连接数据库 [tcc] _kettlekettle连接mysql数据库成功,但获取不到表名

docker 20.10.9 dockerd containerd containerd-shim-runc-v2 runc 组件分析_devmapper not configured-程序员宅基地

文章浏览阅读3.4k次。下载地址https://download.docker.com/linux/static/stable/x86_64/docker-20.10.9.tgz解压到/usr/local/yeqiang@yeqiang-PC:/usr/local/docker$ ll总用量 200848-rwxr-xr-x 1 root staff 33908392 2022-03-14 09:47:07 containerd-rwxr-xr-x 1 root staff 6508544 2022-03-_devmapper not configured