首页 > 数据库 >SQL---mysql删除重复数据

SQL---mysql删除重复数据

时间:2023-01-14 21:32:08浏览次数:45  
标签:GROUP name SQL --- mysql report apply id SELECT


开发时,经常会有清理数据库中重复数据的需求,比如下面这张表report_apply :

SQL---mysql删除重复数据_删除重复数据

我们需要删除report_name重复的数据,具体步骤如下:

-- 重复数据
SELECT report_name from report_apply GROUP BY report_name HAVING count(report_name) > 1
-- 重复数据中最小的id留下
SELECT MIN(id) from report_apply GROUP BY report_name HAVING count(report_name) > 1
-- 查询所有重复数据并排除最小的id 此为需要删除的数据
SELECT id from report_apply where report_name in (
SELECT report_name from report_apply GROUP BY report_name HAVING count(report_name) > 1
)
and id NOT in(
SELECT MIN(id) from report_apply GROUP BY report_name HAVING count(report_name) > 1
)
-- 直接delete from删除会报错,所以包一层,当做一张临时表
SELECT id from (


SELECT id from report_apply where report_name in (
SELECT report_name from report_apply GROUP BY report_name HAVING count(report_name) > 1
)
and id NOT in(
SELECT MIN(id) from report_apply GROUP BY report_name HAVING count(report_name) > 1
)


) as result
-- 然后delete删除即可
DELETE from report_apply where id in (


SELECT id from (


SELECT id from report_apply where report_name in (
SELECT report_name from report_apply GROUP BY report_name HAVING count(report_name) > 1
)
and id NOT in(
SELECT MIN(id) from report_apply GROUP BY report_name HAVING count(report_name) > 1
)


) as result


)

You can't specify target table 'report_apply ' for update in FROM clause

这个错误就是因为,外面没有包一层,加一层当做一张新表就可以了。 

标签:GROUP,name,SQL,---,mysql,report,apply,id,SELECT
From: https://blog.51cto.com/u_15936016/6007820

相关文章

  • SQL---insert方法中使用foreach
    如何在Mysql语句的insert语句中使用foreach方法,做循环插入?这里有一个user的集合,users,将其遍历插入到数据库表user中,方法如下:<insertid="addList"parameterType="com.java4......
  • Linux学习-DAY3
    1.强大好用的SHELLShell就是终端程序的统称,它充当了人与内核(硬件)之间的翻译官,用户把一些命令“告诉”终端程序,它就会调用相应的程序服务去完成某些工作。现在包括​​红帽​......
  • 记一次简单的诈骗网站Getshell-cnblog
    前言:在放假期间接到一个诈骗电话、然后说京东金条利率过高让我处理下(在疫情开放期间京东客服基本上是没有人工客服),然后就慢慢的被拉入钉钉会议,然后骗子给网站的时候发现域......
  • vue3 编译报 ESLint: ‘defineProps‘ is not defined no-undef 错误问题
    解决之道,在/package.json的eslintConfig.env中加入一行:"vue/setup-compiler-macros":true网上找答案,总是扯什么修改.eslint.js文件,须知改文件位于node_modules,如大海捞针,......
  • MySQL高级【行级锁】
    1:行级锁1.1:介绍行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在InnoDB存储引擎中。InnoDB的数据是基于索引组织的,行锁是通过对索引......
  • Navicat 导入和导出 sql文件
    一:Navicat导入MySQL的.sql文件。打开连接connection,选择你要导入的数据库,双击打开(或者新建一个),然后右键该数据库,选“运行文件(executesqlfile)”,然后选择文件。或者新建一......
  • 走进AI图像生成核心技术 - Diffusion
    编者按:2022年,Diffusionmodel成为图像生成领域的重要发现,推动了AI绘画应用的爆发式发展。Diffusion模型相较于其他的图像生成模型,在所需数据更少的背景下,图像生成效果有......
  • go-rod 读取cookie
      //readnetworkvaluesfori,cookie:=rangepage.MustCookies(){log.Printf("chromecookie%d:%+v",i,cookie)} ......
  • go-rod docker启动
        ......
  • [VueJsDev] 快速入门 - vue项目根目录配置文件
    vue项目根目录配置文件:::details目录目录​vue项目根目录配置文件​​​Part.1:package.json-入口文件​​​​Part.2:jsconfig.json-舒适度文件​​​​Part.3......