MySQL删除重复数据
关注我「程序猿集锦」,获取更多分享。初始化实验环境明确需求查找重复的数据查找要保留的数据删除重复的数据方法一方法二方法三写法1写法2总结MySQL中经常会遇到重复的数据,那么当我们遇到重复的时候的时候...
2024.11.151、使用not in 删除重复行,SQL语句如下:
delete FROM fruit_test WHERE id NOT IN (select MAX(id) as id FROM fruit_test GROUP BY name, price);
这里是根据名称和价格分组,拿到不重复数据的最大ID值,然后删除不在这最大ID值的行,即可删除重复行。如果该句MySQL中执行会出现You can‘t specify target table ‘fruit_test‘ for update in FROM clause错误。
该问题也好解决,把not in 里面的SQL再嵌套一层即可:
delete FROM fruit_test WHERE id NOT IN ( select id from (select MAX(id) as id -- 嵌套一层已解决上面的报错 FROM fruit_test GROUP BY name, price) a);
该方法的好处是,主流的数据库都支持这种语法。
2. 使用EXCEPT删除重复行如果你使用的是SqlServer数据库,那么可以使用EXCEPT减去要留下的数据,SQL如下:
delete FROM fruit_test
WHERE id IN ( select id -- 全部 rowid
FROM fruit_test
EXCEPT -- 减去
select MAX(id) -- 要留下的 rowid
FROM fruit_test
GROUP BY name, price) ;
3. 使用minus删除重复行
minus和EXCEPT效果一样,只是EXCEPT用在sqlserver,minus用在oracle。SQL语句如下:
delete FROM fruit_test WHERE id IN ( select id FROM fruit_test minus select MAX(id) FROM fruit_test GROUP BY name, price) ;
关注我「程序猿集锦」,获取更多分享。初始化实验环境明确需求查找重复的数据查找要保留的数据删除重复的数据方法一方法二方法三写法1写法2总结MySQL中经常会遇到重复的数据,那么当我们遇到重复的时候的时候...
2024.11.15如何查找重复行如何删除重复行如何查找多列上的重复行错误的查询语句几种正确的方法如何查找重复行第一步是定义什么样的行才是重复行。多数情况下很简单:它们某一列具有相同的值。本文采用这一定义,或许你对“重复...
2024.11.15大家好,今天我来分享一项MySQL数据库的高级技巧,即如何去除重复记录,让你的数据库变得清爽如新。重复记录不仅占用存储空间,还可能导致数据混乱和查询结果的错误。下面我将详细介绍如何使用MySQL语句去...
2024.11.12MySQL安装教程打开下载的mysql安装文件mysql-essential-5.0.22-win32.msi,双击运行,出现如下界面按“Next”继续选择安装类型,有“Typical(默认)”、“C...
2024.11.131.使用命令行删除一个数据库1.1 首先登陆进入 MySQL 操作界面,命令如下: 命令 : mysql -utest -p;1.2 登陆成功之后可以使用如下命令查看当前已有数据库: 命令 : SHO...
2024.11.15