`
JaHunter
  • 浏览: 92022 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql 删除多余重复记录

    博客分类:
  • java
阅读更多

(stu表中的名字(name)是重复的)

问题:
在Mysql下执行:

delete from stu where name in (select name from stu group by name having count(name) > 1) and id not in (select id from stu group by name having count(name) > 1);

MySql报错: You can't specify target table 'table name' for update in FROM clause


在 Mysql下执行:

select id from stu where name in (select name from stu group by name having count(name) > 1) and id not in (select id from stu group by name having count(name) > 1);

是成功的。

注意:上面的两句话很矛盾啊。


就现在的mysql版本(我用5.1)来说,不能先select出同一表中的某些值,再update这 个表(在同一语句中)

解决:
create table tmp_table as select id from stu where name in (select name from stu group by name having count(name) > 1) and id not in (select id from stu group by name having count(name) > 1);
delete from stu where id in (select id from tmp_table);
drop table tmp_table;

0
0
分享到:
评论

相关推荐

    数据库删除完全重复和部分关键字段重复的记录

    本文将详细介绍如何处理两种类型的重复记录:完全重复和部分关键字段重复的记录,并提供在MySQL、SQL Server和Oracle数据库环境下对应的解决方案。 **完全重复记录的处理** 完全重复记录指的是所有字段值都相同的...

    MySQL查询重复数据(删除重复数据保留id最小的一条为唯一数据)

    然而,仅仅查询重复数据还不够,我们还需要删除多余的记录,仅保留每个重复组中ID最小的那一条。这里要注意的是,MySQL不允许在`DELETE`语句中直接引用被删除的表。因此,我们需要创建一个临时表来存储需要保留的...

    Mysql删除重复的数据 Mysql数据去重复

    进一步,如果想要找到可以安全删除的重复记录,即保留每个分组中的一条记录,我们可以使用子查询来确定哪些记录是多余的。以下是一个示例: ```sql SELECT t1.* FROM employee t1 WHERE (t1.emp_name) IN ( ...

    mysql查询表里的重复数据方法

    对于多个字段(如`username`和`passwd`)的重复记录,可以使用类似方法: ```sql SELECT username, passwd, COUNT(*) FROM hk_test GROUP BY username, passwd HAVING COUNT(*) > 1; ``` ### 删除重复记录: #...

    SQL对冗余数据的删除重复记录只保留单条的说明

    而在Oracle 10g中,每个记录都有一个唯一的`rowid`,可以通过`rowid`来定位并删除重复记录中的多余项: ```sql -- Oracle 10g SELECT * FROM test; SELECT * FROM test GROUP BY id HAVING COUNT(*) > 1; SELECT ...

    MySQL根据某一个或者多个字段查找重复数据的sql语句

    2. 删除多余重复记录,保留每个`(peopleId, seq)`最小`rowid`的记录: ```sql DELETE FROM vitae a WHERE (a.peopleId, a.seq) IN ( SELECT peopleId, seq FROM vitae GROUP BY peopleId, seq HAVING COUNT(*) > ...

    SQL重复记录查询 查询多个字段、多表查询、删除重复记录的方法

    1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断  select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 例二:  ...

    MySQL处理重复数据的学习笔记

    例如,假设我们要删除所有first_name和last_name相同的多余记录,可以分两步操作: 1. 创建临时表存储不重复数据: ```sql CREATE TEMPORARY TABLE temp_person AS SELECT first_name, last_name FROM person_tbl ...

    MySQL面试题目(16个题目)

    * 对 MySQL 数据库去重的关键字是 `SELECT DISTINCT`,可以过滤掉多余的重复记录,仅保留一条记录。 * MySQL 多表连接有左连接、右连接、内连接三种方式,每种连接方式都有其特点和应用场景。 二、索引知识点 * ...

    高性能mysql学习笔记

    - **减少多余的行访问**: 在应用程序端进行联接减少了对同一行数据的重复访问。 - **减少网络流量和内存消耗**: 分解联接减少了数据传输量和内存使用。 #### 三、MySQL查询优化器工作原理 MySQL使用基于开销的...

    使用SQL语句去掉重复的记录【两种方法】

    本文将探讨两种高效的方法来去除具有相同字段值的重复记录,主要针对MySQL环境。 首先,我们来看传统的方法,即使用`DELETE`语句配合`NOT IN`子查询。这种方法的基本思路是保留每个唯一组合的最大或最小`ID`,然后...

    JAVA_MySQL篇.pdf

    - **主键**:是表中的一个或一组字段,其值能够唯一标识表中的一条记录,不允许有重复且不能为空。 - **超键**:如果一个字段或一组字段的值可以唯一标识表中的一行,那么它就是一个超键,它可以包含多余的列。 -...

    MySQL 数据查重、去重的实现语句

    如果需要删除多余的重复记录,仅保留`id`最小的记录,可以使用以下语句: ```sql DELETE FROM user WHERE nick_name IN ( SELECT nick_name FROM (SELECT nick_name FROM user GROUP BY nick_name HAVING COUNT...

    MySQL DBA高频面试题

    - 主键:唯一标识表中每条记录的字段集合,不可重复,也不能为空。 - 外键:用来与其他表的主键建立联系的字段,表示本表记录和另一张表记录的关联关系。 - 超键:在关系数据库中能够唯一标识元组的属性集,超键...

    2019年BATJ最新面试414道题(含答案解析)MySQL篇.pdf

    - 主键(Primary Key)是表中唯一标识记录的字段或字段组合,不可重复且不允许为空。 - 超键(Super Key)是一个或一组属性,可以唯一标识一个记录,可能包含多余属性。 - 候选键(Candidate Key)是可能的主键,...

    MySQL常见面试题 .docx

    超键可能包含多余的属性。 - **候选键**:候选键是最小的超键,它不包含任何冗余属性,也就是说,候选键是能够唯一标识一条记录的最小属性集合。 - **外键**:外键是一个表中引用另一个表主键的字段,用于建立和...

    sql操作语句[参考].pdf

    可以通过子查询结合`DELETE`语句删除多余的重复记录,例如删除people表中peopleId重复且rowid不是最小的记录。 以上是SQL操作语句的基础介绍,它们构成了SQL的核心功能,用于高效地管理和查询数据库。在实际应用中...

    1.功能面试问答.pdf

    删除表中的重复记录通常需要结合GROUP BY和HAVING子句以及ROWID(Oracle中的行标识符)来确定并删除多余的记录。 【存储过程和存储函数】 存储过程是预编译的SQL语句集合,存储在数据库中,可以在需要时调用,以...

    SQL语句SQL语句大全

    LIMIT 和 OFFSET 关键字(在某些数据库系统中,如 MySQL)用于实现分页功能,限制返回的记录数。 I: 触发器 触发器是预定义的 SQL 代码,当特定的数据库操作(如 INSERT、UPDATE 或 DELETE)发生时自动执行。 J: ...

Global site tag (gtag.js) - Google Analytics