ROW_NUMBER ( ) OVER ( PARTITION BY username ORDER BY createtime ASC )

ROW_NUMBER ( )函数的作用是,按照username 对数据进行分组,在每一个分组内,按照createtime 进行排序,排序之后,对每一个分组内的多行数据,标记上序号,序号从1开始,依次递增。标记的规则跟你排序的字段和规则相关。

去重并根据条件保留数据(这个测试了,没问题)

SELECT 
	rn.username,
	rn.userid,
	rn.createtime,
	rn.r
FROM
	(
	SELECT
		username,
		userid,
		createtime,
		ROW_NUMBER ( ) OVER ( PARTITION BY usernameORDER BY createtime ASC ) r FROM erp.erp_employees) rn 
	WHERE rn.r = 1
rn.username,
rn.userid,
rn.createtime 
表示都是你要查询的字段

根据条件删除重复的数据(这个没测试)

DELETE 
FROM TABLE WHERE userid IN 
	(SELECT 
	rn.userid,
FROM
	(
	SELECT
		username,
		userid,
		createtime,
		ROW_NUMBER ( ) OVER ( PARTITION BY usernameORDER BY createtime ASC ) r FROM erp.erp_employees) rn 
	WHERE rn.r = 1
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐