mysql 删除相同数据
来源:互联网 发布:软件靠流量赚钱 编辑:程序博客网 时间:2024/05/22 15:34
最近在研究sql优化,设计到删除重复信息时,遇到些小问题,网上查了些资料,在此记录一下;
user表
id username password
1 admin 123456
2 admin 654321
3 tom 123456
-- 根据某一字段(username),查询全部重读记录
select * from user where username in(select username from user group by username having Count(*)>=2)
结果:
id username password
1 admin 123456
2 admin 654321
-- 筛选重复记录(只显示一条,相同记录保留id的最小值)
select * from user where id not in(select max(id) from user group by username having count(*)>=2)
结果:
id username password
1 admin 123456
3 tom 123456
-- 删除全部重复记录(只保留一条,id最小的)
delete from user where id in (select id from (select max(id) id from user group by username having count(*)>=2) as u)
-- 查询记录
select * from user
结果:
id username password
1 admin 123456
3 tom 123456
由此可见 id=2被删除了
其中 有人疑惑,为什么sql语句不这样写
delete from user where id in(select max(id) from user group by username having count(*)>=2)
但这样写会报错 You can't specify target table <tbl> for update in FROM clause
刚开始自己也很疑惑,后来借鉴了一下别人的资料才知道。
MySQL中 不能先select出同一表中的某些值,再update这个表(在同一语句中),也就是说你不能 对同一张表先selete 然后在 delete update ,所以只能通过一张中间表来操作了, 其实这里的中间表也是 自表查询,只是取了个别名,数据库就不认为是同一张表了。
阅读全文
0 0
- mysql 删除相同数据
- Mysql删除id相同的重复数据
- MySql 几种查询相同字段中相同数据,及删除相同字段的相同数据的方法
- mysql 删除相同的记录
- mysql删除 相同记录语句
- 删除数据库表中某一字段相同的数据,并保留最新一条---Mysql
- Mysql如何删除表里相同的记录
- mysql批量删除相同前缀的表格
- mysql批量删除前缀相同的表
- Oracle数据库中删除两表中相同数据
- 循环list删除相同的数据
- oracle 相同数据删除(只留一条)
- mysql获取月日相同的数据
- 练习 3.16 删除一组数据中的相同数据
- 多字段相同数据查询 并删除多余数据
- 重复数据删除:基于相同数据的检测
- mysql 删除重复数据
- MYSQL 删除重复数据。。
- 【机器学习】Knn算法实现手写数字识别
- leetcode-92. Reverse Linked List II(将单链表部分进行转置)
- QT QThread 学习笔记
- 判断元素出栈、入栈顺序的合法性。如:入栈的序列( 1,2,3,4,5 ),出栈序列为 ( 4,5,3,2,1 )是合法序列,入栈的序列( 1,2,3,4,5 ),出栈序列为( 1,5,3,2,4 )是
- 剑指offer 面试题17 合并两个排序的链表-Java实现
- mysql 删除相同数据
- [php学习笔记3]对象、方法
- 变分自编码器数学原理小结
- Vue环境搭建
- 【脚本语言系列】关于Python网页服务Microsoft IIS,你需要知道的事
- java入门第一季-java开发环境搭建
- Picasso报错 java.io.IOException: Cannot reset
- TCP的状态机
- BIEE 12c使用runcat.sh脚本部署catalog并移除BIConsumer角色