`
guochongcan
  • 浏览: 328119 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

MYSQL用一条SQL语句删除重复记录

阅读更多
MYSQL用一条SQL语句删除重复记录

MYSQL不支持如下语句:
delete from t_user where id in(select max(id) as id from t_user group by username );

MYSQL用以下词句就可以:
delete t_user from t_user , (select id from t_user group by username having count(*)>1 ) as t2 where t_user.id=t2.id;


例子如下:

drop table t_user;
create table t_user(
id        int(5) not null auto_increment,
username varchar(10),
age       int(3),
primary key(id)
);

insert into t_user(username,age) values('aaa',20);
insert into t_user(username,age) values('aaa',20);
insert into t_user(username,age) values('bbb',20);
insert into t_user(username,age) values('bbb',20);
insert into t_user(username,age) values('ccc',20);
insert into t_user(username,age) values('ccc',20);
insert into t_user(username,age) values('ddd',20);
insert into t_user(username,age) values('ddd',20);

mysql> select * from t_user;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 1 | aaa      |   20 |
| 2 | aaa      |   20 |
| 3 | bbb      |   20 |
| 4 | bbb      |   20 |
| 5 | ccc      |   20 |
| 6 | ccc      |   20 |
| 7 | ddd      |   20 |
| 8 | ddd      |   20 |
+----+----------+------+

mysql> delete t_user from t_user , (select id from t_user group by username having count(*)>1 ) as t2 where t_user.id=t2.id;
Query OK, 4 rows affected (0.05 sec)


mysql> select * from t_user;
+----+----------+------+
| id | username | age |
+----+----------+------+
| 2 | aaa      |   20 |
| 4 | bbb      |   20 |
| 6 | ccc      |   20 |
| 8 | ddd      |   20 |
+----+----------+------+
分享到:
评论
2 楼 guochongcan 2011-12-08  
fantaxy025025 写道
兄弟,你这个不行的。

只能删除 重复个数是2的,如果重复个数大于2,则不符合要求了。

thanks!


有时间再研究下,3Q
1 楼 fantaxy025025 2011-12-08  
兄弟,你这个不行的。

只能删除 重复个数是2的,如果重复个数大于2,则不符合要求了。

thanks!

相关推荐

    Mysql常用SQL语句

    MySQL常用SQL语句 MySQL是一种关系型数据库管理系统,使用SQL(Structured Query Language)语言来管理和操作数据库。下面是MySQL中一些常用的SQL语句: 创建、删除和基本查询 * 显示数据库:`show databases;` *...

    Delphi adoquery处理多条SQL语句

    在这个例子中,我们首先通过 `BeginTrans` 开始一个事务,然后依次执行多条 SQL 插入语句,最后使用 `CommitTrans` 提交事务。如果在执行过程中出现异常,则使用 `RollbackTrans` 回滚事务。 ##### 3. 更新批处理 ...

    【MySQL数据库】一条SQL语句为什么执行这么慢?

    【MySQL数据库】一条SQL语句执行慢的问题是一个复杂的议题,涉及到多个方面,包括数据库的内部机制、事务处理、索引优化以及SQL语句的设计。下面将深入解析导致SQL执行变慢的主要因素。 **一、执行偶尔变慢** 1. *...

    MySQL SQL语句练习题及答案

    MySQL SQL语句练习题及答案 本资源提供了 MySQL SQL 语句的练习题及答案,涵盖了创建表、插入数据、删除数据、更新数据、查询数据等多方面的知识点。 一、创建表 在 MySQL 中,创建表使用 CREATE TABLE 语句。...

    Python语句实现Mysql多条插入语句

    本代码,用python语句,实现了一次插入多条sql语句。希望能对大家带来帮助。

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

    sql 查出一张表中重复的所有记录数据 1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、...

    mysql sql语句示例1

    - `PRIMARY KEY (student_id)` 设置`student_id`为主键,确保每条记录都有唯一的标识。 #### 示例2:插入数据 一旦创建了表格,就可以使用`INSERT INTO`语句向表格中添加数据。 ```sql INSERT INTO students ...

    介绍六个有用的MySQL的SQL语句

    MySQL 是一种广泛使用的关系数据库管理系统,SQL 语句是其核心组成部分。今天,我们将介绍六个有用的 MySQL SQL 语句,帮助您更好地使用 MySQL 数据库。 1. 计算年数 计算年数是日常生活中常见的问题,例如,根据...

    mysql 一条语句删除多表数据

    "mysql 一条语句删除多表" 的主题就是关于如何通过单个SQL语句来删除关联的多个表的数据,从而节省数据库连接资源和提高执行效率。下面将详细解释这一技术及其背后的原理。 首先,我们要理解的是SQL语言中的“JOIN...

    MySQL删除重复记录

    与`REPLACE`选项不同,`IGNORE`选项在遇到重复记录时不会删除旧记录,而是直接跳过这条记录,继续处理下一条记录。这适用于那些不希望因为重复记录而中断数据导入场景。 使用`IGNORE`选项的命令如下: ```sql LOAD...

    一条sql语句在mysql中是如何执行的.docx

    MySQL 是一个开源的关系数据库管理系统,它的执行 SQL 语句的流程是一个复杂的过程,涉及到多个组件和步骤。下面是 MySQL 执行 SQL 语句的流程详解: 1. 连接器(Connector):当用户登录数据库时,连接器会对用户...

    Sql语句 查询本周记录\本月记录\本季度记录\本年记录

    这条语句使用 `DATEPART` 函数将日期转换为季度,然后比较当前日期的季度减去一个季度以获取上季度的记录。 查询本年记录 MySQL 中,您可以使用以下语句查询本年记录: ```sql SELECT * FROM ht_invoice_...

    Mysql查询最近一条记录的sql语句(优化篇)

    在MySQL数据库中,查询最近一条记录通常涉及到时间戳或者某个排序字段。本文主要探讨了三种不同的SQL语句来实现这一目标,从效率低下的方法到更优化的解决方案,特别是针对大量数据的情况。 首先,最简单但效率最低...

    MySQL 查询重复内容只显示一条

    5. **源码与工具**:标签中的“源码”可能指的是用于实现上述查询的SQL语句,而“工具”可能是指使用MySQL客户端或其他数据库管理工具(如phpMyAdmin、MySQL Workbench等)来执行这些查询。 6. **文件111.sql**:这...

    mysqls一款专为node.js生成sql语句的插件链式调用使用灵活

    MySQLs是一款专为Node.js设计的SQL语句生成器,其特点是通过链式调用的方式提供了灵活的操作体验。在Node.js的开发环境中,与数据库交互是必不可少的一部分,而MySQLs插件则为开发者提供了一个高效且易用的工具,...

    MySQL数据库sql语句增删改查笔记

    - **插入单行数据**:例如,插入一条学生记录。 ```sql INSERT INTO student (id, name, age, sex, school_id, score) VALUES ('001', 'zhangsan', 20, 'male', '001', 80); ``` - **插入多行数据**:一次性...

    DB查询分析器批量执行多条SQL语句并查看各自的执行时间

    - **图1**:显示第一条SQL语句的执行时间为00:00:02:703,返回结果为345040条记录。 - **图2**:第二条SQL语句的执行时间为00:00:00:125,同样返回345040条记录。 - **图3**:第三条SQL语句的执行时间为00:00:00:000...

    MySQL练习代码, sql语句练习1

    本压缩包“Sql1”提供了SQL语句的练习,帮助用户深入理解和熟练掌握MySQL中的SQL用法。 首先,基础的SQL语句包括SELECT、INSERT、UPDATE和DELETE。SELECT用于从数据库中查询数据,是SQL中最常用的部分。你可以学习...

    MySQL SQL查询语句大全集锦(经典珍藏)

    例如,向MYTABLE表中添加一条记录,可以使用`INSERT INTO MYTABLE VALUES(’hyq’, ’M’);`。 查看数据库中存在哪些表,可以使用`SHOW TABLES;`。查看表结构可以使用`DESCRIBE 表名;`,例如`DESCRIBE MYTABLE;`。...

    sql语句插入MySQL数据库操作指南

    例如,如果我们有一个名为`employees`的表,包含`id`, `name`和`position`字段,可以这样插入一条记录: ```sql INSERT INTO employees (id, name, position) VALUES (1, '张三', '经理'); ``` 在Java开发中,通常...

Global site tag (gtag.js) - Google Analytics