如何通过SQL批量删除重复数据

2023-09-20 20:17:44


前言

浅浅记录一下,工作问题。
今天在库中看到存在很多重复数据,本文将介绍怎么通过SQL语句批量删除重复数据的一种方式。


一、GROUP BY、HAVING是什么

我们先来了解一下GROUP BY,HAVING。
GROUP BY是SQL语言中的一种聚合函数。从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”;它的作用是通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。在SQL中,GROUP BY是SELECT语句的可选子句,用于根据一个或多个字段对查询结果进行分组,它减少了结果集中的行数。
HAVING通常用在SQL语句中,与GROUP BY子句一起使用,对分组的结果进行过滤。如果将WHERE关键字用于在聚合运算前过滤分组的话,那么HAVING关键字则用于在聚合运算后过滤分组。

简而言之,ROUP BY用于按照一个或多个字段对查询结果进行分组,HAVING则是对分组之后的数据进行再次过滤

二、编写SQL

1.查询重复数据

代码如下(示例):

SELECT MIN( a.task_id ) id 
	FROM
		PLMS_T_D_TaskExecuteLog a 
	GROUP BY
		a.car_desc,
		a.direction,
		a.distance,
		a.log_begin_time,
		a.log_desc,
		a.log_status,
		a.mai_subName,
		a.person_str,
		a.weather 
HAVING
	COUNT ( * ) > 1

2.删除SQL

代码如下(示例):

DELETE 
FROM
	TaskExecuteLog 
WHERE
	task_id IN (
	SELECT MIN( a.task_id ) id 
	FROM
		PLMS_T_D_TaskExecuteLog a 
	GROUP BY
		a.car_desc,
		a.direction,
		a.distance,
		a.log_begin_time,
		a.log_desc,
		a.log_status,
		a.mai_subName,
		a.person_str,
		a.weather 
HAVING
	COUNT ( * ) > 1)

总结

以上就我通过SQL批量删除数据的语句,在此欢迎各位同行分享其他方式。

更多推荐

浅谈C++|文件篇

C++中的文件操作是通过使用文件流来实现的。文件流提供了对文件的输入和输出功能。下面是C++文件操作的基本步骤:1.包含头文件:首先,包含`<fstream>`头文件,它包含了进行文件操作所需的类和函数。2.进行文件读写操作:使用文件流对象的成员函数进行文件读写操作。例如,使用`getline()`函数逐行读取文本内容

小型水库雨水情测报和大坝安全监测解决方案

一、建设背景我国小型水库数量众多,大多由农村集体经济组织管理,灌溉、供水、防洪、生态效益突出,是农业生产、农民生活、农村发展和区域防洪的重要基础设施,实施乡村振兴战略和生态文明建设的重要支撑保障。由于小型水库工程存在先天不足等问题,缺陷较多。2021年10月19日,水利部正式印发《小型水库雨水情测报和大坝安全监测设施建

Linux中使用selenium截图的文字变为方框的解决方案

一、前言最近在Linux中使用selenium截图时,发现文字都变为了方框:虽然不影响selenium的使用,但有点影响调试,也不好看,后面发现是因为Linux缺少中文字体的缘故,需要安装中文字体就能解决。二、安装中文字体(以centos为例)1)前置检查先检查/usr/share目录下是否有有fonts和fontco

[2023.09.21]:源码已上传,供大家了解Rust Yew的前后端开发

这个资源是Rust的源代码压缩包,供大家了解RustYew的前后端开发。资源中的代码非常简洁易懂,虽然离商用场景还有一段距离,但是涵盖了前端的组件搭建、事件通信和反向代理,以及后端的RestfulAPI的路由、功能实现和数据库访问。此外,还包括了postgres数据库的初始化脚本和docker部署脚本,方便您快速搭建环

前端版本更新提示

前端版本更新提示前言:最近项目发布比较频繁、导致每次都要主动告知用户/测试去刷新清除页面缓存、从而防止发了新功能之后、用户因为没有刷新页面/清除缓存,一直使用的还是旧版本。所以就着手写一个检测到发布了新版本就自动提醒用户去刷新页面的功能。一、思路:我们可以通过每次打包构建(npmrunbuild)之后给包打一个唯一标识

企业为什么做数字化转型?

数字化转型是一个战略性的、势在必行的过程,企业利用技术和数字工具从根本上改变其运营方式,为客户提供价值,并在现代商业环境中保持竞争力。企业踏上数字化转型之旅有几个令人信服的理由:1.提高效率和生产力:数字工具和自动化可以简化流程、减少手动工作并提高整体运营效率。这使得组织能够用更少的资源做更多的事情并更有效地分配资源。

进程同步与互斥

目录进程同步与互斥(1)第一节、进程间相互作用一、相关进程和无关进程二、与时间有关的错误第二节、进程同步与互斥一、进程的同步二、进程的互斥三、临界区进程同步与互斥(2)三、信号量与P、V操作的物理含义四、用P、V操作实现进程间的互斥五、用P、V操作实现进程间的同步六、信号量及P、V操作总结进程同步与互斥(3)第四节经典

MyBatis基础之动态SQL

文章目录动态SQLif元素choose-when-otherwise元素where元素set元素foreach元素动态SQL简而言之,动态SQL就是在Mapper中使用分支、循环等逻辑。常见的动态SQL元素包括:if元素choose-when-otherwise元素where元素set元素foreach元素if元素<i

第二章 物理层

引言如果这篇文章对您有帮助的话,希望您能点赞、收藏、加关注!您的鼓励就是我前进的动力!本文所参考的教材为:谢希仁.计算机网络.北京:电子工业出版社,2021.重要知识点总结三种通信方式:单向通信、双向交替通信、双向同时通信。两大类调制:基带调制(编码),带通调制。常用的四种编码方式:不归零制、归零制、曼彻斯特编码、差分

Jenkins :添加node权限获取凭据、执行命令

拥有Jenkinsagent权限的账号可以对node节点进行操作,通过添加不同的node可以让流水线项目在不同的节点上运行,安装Jenkins的主机默认作为master节点。1.Jenkins添加node获取明文凭据通过添加node节点,本地监听ssh认证,选则凭据(明文)进行ssh认证,拿到密码。1.新建节点-man

在 Vue3 项目中如何关闭 ESLint

介绍ESLint是一个用于检查JavaScript代码质量的工具,它可以帮助开发者遵循一致的编码规范,并发现潜在的错误和问题。然而,在某些情况下,我们可能希望关闭ESLint,例如在一些小型项目中或者在特定的开发阶段。本文将介绍如何在Vue3项目中关闭ESLint。步骤第一步:找到配置文件在Vue3项目中,ESLint

热文推荐