原创

Mysql 数据库表中实现删除重复数据

1. GROUP BY

GROUP BY 是分组查询, 一般GROUP BY是和聚合函数配合使用。


2、Having

where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。

having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。通常,你需要通过在HAVING子句中重复聚合函数表达式来引用聚合值,就如你在SELECT语句中做的那样。


3、数据库表中实现删除重复数据,此操作每执行一次删除一条最新Id值,具体代码如下:

DELETE
FROM
	tb_user
WHERE
	id IN (
		SELECT
			id
		FROM
			(
				SELECT
					max(id) AS id,
					count(userId) AS count
				FROM
					tb_user
				GROUP BY
					userId
				HAVING
					count > 1
				ORDER BY
					count DESC
			) AS tab
	)

聚合函数的组合使用,具体如下:

SELECT
	COUNT(id) AS num_id,
	MAX(SAL) AS max_sal,
	Min(AGE) AS min_age,
	SUM(SAL) / COUNT(SAL) AS avg_sal,
	AVG(DISTINCT SAL) AS disavg_sal
FROM
	USER


常用的聚合函数包含如下:

求和函数——SUM()

计数函数——COUNT()

最大/最小值函数—MAX()/MIN()

均值函数——AVG()

关注下方微信公众号“Java精选”(w_z90110),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信