【SQL语句极度挑战】求一高难度删除SQL语句
现有表 temp
结构: UserID varchar(20);
OperateDate datetime;
[其它字段略,无主键]
数据: UserID OperateDate
-------- ------------------------
aaa 2008-04-02 14:58:13.073
bbb 2008-04-02 19:28:17.307
aaa 2008-04-02 19:28:43.870
ccc 2008-04-03 12:45:54.353
bbb 2008-04-03 12:46:35.557
aaa 2008-04-04 00:56:23.290
ddd 2008-04-06 00:10:04.887
aaa 2008-04-06 04:25:31.997
要求: 删除重复的数据
先根据 UserID 判断某条重复的记录是否大于5条,如果大于5条,则根据OperateDate 进行排序,删除日
期最早的记录,保留最新的重复UserID 的5条记录,所有UserID的重复记录可以有重复,但不允许超
过6条,只允许保留5条
补充:如果上面的要求不是看的很明白的话,那我换一个方向说一下,当执行了语句之后,在这张表里面,aaa的记录
不允许出现6条,bbb的记录也不允许出现6条;假如有一条记录aaa 的重复出现了8次,那么将删除这8条记录
中的3条,而且这三条是时间最早的三条,保留最新的5条。
阐述完毕,谢谢
结构: UserID varchar(20);
OperateDate datetime;
[其它字段略,无主键]
数据: UserID OperateDate
-------- ------------------------
aaa 2008-04-02 14:58:13.073
bbb 2008-04-02 19:28:17.307
aaa 2008-04-02 19:28:43.870
ccc 2008-04-03 12:45:54.353
bbb 2008-04-03 12:46:35.557
aaa 2008-04-04 00:56:23.290
ddd 2008-04-06 00:10:04.887
aaa 2008-04-06 04:25:31.997
要求: 删除重复的数据
先根据 UserID 判断某条重复的记录是否大于5条,如果大于5条,则根据OperateDate 进行排序,删除日
期最早的记录,保留最新的重复UserID 的5条记录,所有UserID的重复记录可以有重复,但不允许超
过6条,只允许保留5条
补充:如果上面的要求不是看的很明白的话,那我换一个方向说一下,当执行了语句之后,在这张表里面,aaa的记录
不允许出现6条,bbb的记录也不允许出现6条;假如有一条记录aaa 的重复出现了8次,那么将删除这8条记录
中的3条,而且这三条是时间最早的三条,保留最新的5条。
阐述完毕,谢谢
...全文
相关推荐
SQL三种删除语句的用法比较
本文将详细介绍`DROP`、`TRUNCATE`和`DELETE`三种SQL删除语句的区别及其应用场景。#### 一、SQL中的基本语法1.
SQL删除多列语句的写法
首先,我们需要理解SQL Server中的`ALTER TABLE`语句,它是用于修改现有表结构的关键命令。当需要删除表中的一个或多个列时,可以结合`DROP COLUMN`子句来完成这一操作。
oracle使用sql语句增加字段示例(sql删除字段语句)
Oracle 中使用 SQL 语句增加、修改、删除字段的示例Oracle 数据库管理系统提供了多种方式来管理数据库表结构,包括增加、修改和删除字段。
一条sql语句完成MySQL去重留一
这个成功的SQL语句巧妙地避免了直接在删除过程中引用被删除的表,而是通过关联子查询来确定要删除的记录,从而实现了高效且准确的去重保留一条的功能。
SQL删除语句DROP、TRUNCATE、 DELETE 的区别
`DELETE`语句是SQL中最灵活的删除方式,它可以删除满足特定条件的行,也可以删除表中的所有数据。


