删除数据库表中某一字段相同的数据,并保留最新一条---Mysql
来源:互联网 发布:剑网三最帅花哥数据 编辑:程序博客网 时间:2024/04/29 11:59
今天碰到一个题,假如有一个person表,有id,和name两个字段,如果要删除存在name相同的字段的数据,并保留最新一条,sql怎么设计?
原本的设计如下,但是运行出错
DELETE FROM personWHERE (pname IN (SELECT pname FROM person GROUP BY pname HAVING COUNT(pname) > 1)) AND (id NOT IN (SELECT MIN(id) FROM person GROUP BY pname HAVING COUNT(pname) > 1));
错误原因:You can't specify target table for update in FROM clause
翻译过来的意思是:不能先select出同一表中的某些值,再update这个表(在同一语句中).
正确的写法是:
DELETEFROM personWHERE ( pname IN ( SELECT n. pname FROM ( SELECT pname FROM person GROUP BY pname HAVING COUNT(pname) > 1 ) n ) )AND ( id NOT IN ( SELECT i.id FROM ( SELECT MIN(id) AS id FROM person GROUP BY pname HAVING COUNT(pname) > 1 ) i ));
阅读全文
0 0
- 删除数据库表中某一字段相同的数据,并保留最新一条---Mysql
- 高效删除Oracle数据库中重复数据,并保留最新一条的方法
- 高效删除Oracle数据库中重复数据,并保留最新一条的方法
- sqlserver中删除数据表中重复的数据或是某一列中重复的字段,紧保留一条数据
- mysql 删除表中重复的数据,只保留一条
- MySQL中删除表中重复数据,只保留一条
- mysql 查找重复的字段,并删除记录只保留一条
- 关于mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句理解
- mysql删除重复的数据,保留一条,根据多个字段判断。以及统计重复数据
- mysql数据库表中删除某一列值重复的全部行和只留一条
- mysql数据库表中删除某一列值重复的全部行和只留一条
- 在oracle数据库表中删除所有重复的数据,仅保留一条记录
- pgsql:删除表中重复数据保留其中的一条
- MySql 几种查询相同字段中相同数据,及删除相同字段的相同数据的方法
- Mysql删除表中某字段重复记录,并保留id最新的记录
- mysql 删除字段内的重复内容只保留一条
- Oracle去除重复(某一列的值重复),取最新(日期字段最新)的一条数据
- SQL 删除数据库中重复数据 保留一条
- Android RecyclerView 复杂列表的实现
- [NOI题库]4.5算法之动态规划9276:Connected Graph DP
- mysql_real_connect()函数介绍
- 天仙配
- 【廖雪峰Python习题集】sorted
- 删除数据库表中某一字段相同的数据,并保留最新一条---Mysql
- Viewer 是一款强大的 jQuery 图像浏览插件。
- 3D数学 学习笔记(9) 凹凸映射(bump mapping)和切线空间(tangent space)
- sublime3注册码
- ListView&RecycleView加载大量数据的时候如何提高效率
- FastMM报错
- druid连接池初体验
- 2017 MongoDB 副本集搭建
- Spire.XLS 教程:将Excel导出到XML和XML导入Excel