mysql表数据去重,一对多改为一对一去重

数据 一对一 mysql 一对 改为 删除 重复 例如 原表 select 编程进阶笔记
发布日期 2022-09-14 更新日期 2022-09-14 阅读次数 86 文章字数 675

原本的表是一对多,后面改为一对一

所以,要删除一些重复数据,仅保留对应关系的一条。

首先,复制表结构,然后group by 字段1,字段2... ,这里的 group by 就是要保留的一对一关系,例如 cid 对应一个 rid

CREATE TABLE 新表 LIKE 原表;

insert into 新表 select * from 原表 group by cid,rid;

然后把两个表名对换即可。

如果数据很多,可能有些耗时,得到新表后先不着急删除原表,先检测数据是否为想要的数据,确认原表已无用再删除。

后记:

另一种办法,就是 delete 语句,伪代码: delete  ....   where 存在重复的数据 and not in ( 第一条数据id )

例如:(删除重复的部门名称)

DELETE 
FROM
	dept 
WHERE
	dname IN ( SELECT * FROM ( SELECT dname FROM dept GROUP BY dname HAVING count( dname ) > 1 ) a ) 
	AND deptno NOT IN ( SELECT * FROM ( SELECT min( deptno ) AS deptno FROM dept GROUP BY dname HAVING count( dname ) > 1 ) b )

第一种思路更简单操作更安全,第二种也行。

附:mysql 的 in 可以多字段,例如:

select * from user where (user_id,type) in ((568,6),(569,6),(600,8));

select * from user where (legal_id,type) not in (select a.legal_id,a.type from user as a , role_user_relation as b  where a.legal_id=b.legal_id and a.type=b.legal_type) limit 0,10;

文章作者: 朱丰华

文章链接: https://smart.52dixiaowo.com/blog/post-75.html

版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。

数据 一对一 mysql 一对 改为 删除 重复 例如 原表 select

发表评论

相关推荐
朱丰华   |   1周前   |   sql · mysql · 字节 · 字符

mysql常用字段类型详解

44    评论    点赞
朱丰华   |   8个月前   |   git

git从缓存中移除数据git rm --cached

436    评论    点赞
朱丰华   |   1年前   |   页面 · 监听

iframe子父页面信息传递与监听

429    评论    点赞
朱丰华   |   1年前   |   git · hub · 仓库

go克隆并引用github仓库

162    评论    点赞
朱丰华   |   1年前   |   sql · mysql

mysql Timestamp或dateTime格式筛选

138    评论    点赞
朱丰华   |   1年前   |   请求 · 一个

ab测压命令,apache测压工具

196    评论    点赞
朱丰华   |   1年前   |   正则 · 表达

正则表达式,实现if...then...else

128    评论    点赞
朱丰华   |   1年前   |   mysql · 变量 · sql

MySQL实现行号-自定义变量

123    评论    点赞
朱丰华   |   1年前   |   变量 · mysql · sql · 用户

MySQL用户自定义变量

111    评论    点赞
朱丰华   |   1年前   |   sql · php

PHP如何使用PDO批量执行SQL?

131    评论    点赞
朱丰华   |   1年前   |   sed · 文件

Shell 指定行处理head、tail、sed

167    评论    点赞
朱丰华   |   1年前   |   linux · 内容

linux环境下,对于一个大文件,如何查看其中某行的内容

80    评论    点赞
朱丰华   |   1年前   |   php · 字符 · 字符串

如何在 PHP 中将字符串的第一个字母转换为大写

165    评论    点赞
朱丰华   |   1年前   |   sql · mysql

mysql GROUP_CONCAT 顺序排序

95    评论    点赞
朱丰华   |   1年前   |   linux · 文件

linux递归统计文件夹大小、du命令_Linux du命令:查看文件夹和文件的磁盘占用情况

208    评论    点赞
朱丰华   |   1年前   |   curl

curl命令忽略ssl证书进行https请求

261    评论    点赞
朱丰华   |   1年前   |   js · vue · 监听

js vue监听,深度监听

123    评论    点赞
朱丰华   |   1年前   |   vue · model

vue语法v-model原理与实现

131    评论    点赞
朱丰华   |   1年前   |   python

python pip离线安装某个包

147    评论    点赞
朱丰华   |   1年前   |   php · 引用 · 变量 · c语言

php扩展内存管理与引用计数

139    评论    点赞
{{item.author_name}}   |   {{new Date(item.date*1000).log()}}   |   {{it}} ·

{{item.title}}

{{item.uv}}    评论    点赞