返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >SQL删除重复数据的实例教程
  • 226
分享到

SQL删除重复数据的实例教程

2024-04-02 19:04:59 226人浏览 薄情痞子
摘要

目录1 sql去重2 distinct3 group by1. 查询根据名字去重后数据(名字相同取id值大的)2. 删除名字相同数据(名字相同保留id值大的)4 总结1 SQL去重

1 SQL去重

SQL中去除完全相同数据可以用distinct关键字,任意字段去重可以用group by,以下面的数据表为例。

2 distinct

存在两条完全相同的纪录,用关键字distinct就可以去掉

根据单个字段去重,能精确去重;

作用在多个字段时,只有当这几个字段的完全相同时,才能去重;

关键字distinct只能放在SQL语句中的第一个,才会起作用

一般用来返回不重复的记录条数,返回不重复的条数(去掉test重复的,就剩下6条)

3 group by

1. 查询根据名字去重后数据(名字相同取id值大的)

SELECT * FROM stu WHERE id IN (SELECT MAX(id) FROM stu GROUP BY `name`)

2. 删除名字相同数据(名字相同保留id值大的)

group by + count + max去掉重复数据

1)SELECT * FROM stu

2)加上group by 后,会将重复的数据去掉了

3) 条件(名字)是数量大于1的重复数据

SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`) > 1

#条件是数量大于1的重复数据
SELECT * FROM stu WHERE `name` IN(
SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`)>1 
)

4)查看某字段重复数据的id

SELECT id, COUNT(*) FROM stu 
GROUP BY NAME DESC HAVING(COUNT(*) > 0)

5)查询所有重复数据

SELECT * FROM stu WHERE NAME IN (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`) > 1)

5) 去重

可以使用distinct去重(返回不重复的用户名)

删除多余的重复记录(name),只保留id最大的记录。

DELETE FROM stu 
WHERE id NOT IN ( SELECT a.id FROM ( SELECT MAX( id ) AS id FROM stu GROUP BY `name` )a )

或者

 DELETE FROM stu WHERE `name` IN (SELECT `name` FROM (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(`name`)>1) e)
 AND id NOT IN (SELECT id FROM (SELECT MAX(id) AS id FROM stu GROUP BY `name` HAVING COUNT(`name`)>1) t)
 #查询显示重复的数据都是显示最前面的几条,因此不需要查询是否最小值

错误删除

DELETE FROM stu WHERE name IN (SELECT name FROM stu GROUP BY name HAVING COUNT(name)>1)
AND id NOT IN (SELECT MAX(id) FROM stu GROUP BY stu HAVING COUNT(name)>1)

原因是:不能将直接查处来的数据当做删除数据的条件,我们应该先把查出来的数据新建一个临时表,然后再把临时表作为条件进行删除功能

4 总结

去重后名字记录

SELECT `name` FROM stu 
GROUP BY NAME HAVING(COUNT(*) > 0)

2)

所有重复名字的记录

SELECT `name` FROM stu 
GROUP BY NAME HAVING COUNT(*) > 1

3)把所有重复的记录都删了

DELETE FROM stu WHERE name IN
(SELECT name FROM stu GROUP BY name HAVING COUNT(*)>1)

无法在删除时同时查询这张表,这个问题只在Mysql中出现,oracle没有。怎么解决?我们只需要在查出结果以后加一张中间表。让执行器认为我们要查的数据不是来自正在删的这张表就可以了。

DELETE FROM stu WHERE `name` IN 
    (SELECT a.name FROM 
        (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(*)>1) a)

所有重复数据都删除, 就剩王五一条数据了

4) 现在删除所有重复数据数据做完了,考虑怎么保留重复数据中id最小的。只需要在删除时让删除该条的记录id不在重复数据id最小的当中就可以了。

DELETE FROM stu WHERE `name` IN 
    (SELECT a.name FROM 
        (SELECT `name` FROM stu GROUP BY `name` HAVING COUNT(*)>1) a)
     AND id NOT IN 
    (SELECT b.id FROM 
        (SELECT MIN(id) id FROM stu 
            GROUP BY `name` HAVING COUNT(*)>1) b);

还有简单办法 算出去重后所有数据(保留最小ID),然后删除id不在该数组里的

 DELETE FROM stu WHERE id NOT IN (SELECT t.id FROM (SELECT MIN(id) AS id FROM stu GROUP BY `name`)t)

到此这篇关于SQL删除重复数据的文章就介绍到这了,更多相关SQL删除重复数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SQL删除重复数据的实例教程

本文链接: https://lsjlt.com/news/153507.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQL删除重复数据的实例教程
    目录1 SQL去重2 distinct3 group by1. 查询根据名字去重后数据(名字相同取id值大的)2. 删除名字相同数据(名字相同保留id值大的)4 总结1 SQL去重 ...
    99+
    2024-04-02
  • SQL删除重复数据的方法
    这篇文章将为大家详细讲解有关SQL删除重复数据的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在sql中,可以使用select语句删除重复数据,语法为:“s...
    99+
    2024-04-02
  • SQL怎么删除重复数据
    这篇文章主要介绍“SQL怎么删除重复数据”,在日常操作中,相信很多人在SQL怎么删除重复数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SQL怎么删除重复数据”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-07-02
  • Python pandas找出、删除重复的数据实例
    目录前言一、duplicated()二、drop_duplicates()总结前言 当我们使用pandas处理数据的时候,经常会遇到数据重复的问题,如何找出重复数据进而分析重复原因,...
    99+
    2024-04-02
  • SQL Server中怎么删除重复数据
    这篇文章将为大家详细讲解有关SQL Server中怎么删除重复数据,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。方法一复制代码 代码如下: declare...
    99+
    2024-04-02
  • sql如何删除完全重复数据
    要删除完全重复的数据,可以使用以下SQL语句:```sqlDELETE FROM table_nameWHERE (...
    99+
    2023-08-08
    sql
  • 备份数据重复的数据库sql删除操作
    update   eepm_engineer_pro_implement set state=2 where id in ( select   p1.id FROM eepm_engineer_pro_implement...
    99+
    2017-09-17
    备份数据重复的数据库sql删除操作
  • SQL Server如何删除表中的重复数据
    本篇内容介绍了“SQL Server如何删除表中的重复数据”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!添加示例数据create&...
    99+
    2023-06-30
  • postgresql 删除重复数据案例详解
    1.建表 -- ---------------------------- -- Table structure for test -- ------------------...
    99+
    2024-04-02
  • oacle 删除重复数据
    --测试数据create table test as select * from dba_objects;insert into test select * from test;--查看...
    99+
    2024-04-02
  • mysql删除重复数据
    mysql删除重复数据分为两种情况: 一、以一个字段来唯一确定一条记录,可以用以下SQL来删除: delete glt_entity_tmp from glt_entity_tmp,(selec&...
    99+
    2024-04-02
  • pandas删除重复数据
     1、pandas中重复索引问题 df = df[~df.index.duplicated()] 2、pandas删除重复数据行 # 首先导入常用的两个包import pandas as pdimport numpy as np# 1.删除...
    99+
    2023-09-01
    pandas python 数据分析
  • 数据库删除重复数据
    当数据库数据量大的时候,删除重复元素是很讨厌的,有时候怎么也写不对,闲下来整理一下删除 重复数据的sql,数据表是之前看mysql教学视频的素材,但是找不到哪...
    99+
    2024-04-02
  • sql中删除重复数据的方法是什么
    在SQL中删除重复数据的方法有以下两种方式: 使用DELETE和CTE(Common Table Expression)结...
    99+
    2024-04-08
    sql
  • SQL怎么删除表内完全重复数据
    要删除表内完全重复的数据,可以使用以下SQL语句: DELETE FROM table_name WHERE row...
    99+
    2024-04-02
  • sql查询语句教程之插入、更新和删除数据实例
    目录前言1、插入数据1.1 为表的所有字段插入数据1、insert语句中不指定具体的字段名2、insert语句中列出所有字段1.2 为表的指定字段插入数据1.3 同时插入多条记录1....
    99+
    2024-04-02
  • Android List删除重复数据
    1、通过循环进行删除public static void removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ; i ++ ) { for ( int ...
    99+
    2023-05-31
    list 重复数据 roi
  • MySQL删除重复数据的方法
    这篇文章主要介绍MySQL删除重复数据的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近在做一个批量数据导入到MySQL数据库的功能,从批量导入就可以知道,这样的数据在插入数据...
    99+
    2024-04-02
  • SQLServer删除表中的重复数据
    添加示例数据 create table Student( ID varchar(10) not null, Name varchar...
    99+
    2024-04-02
  • oracle如何删除重复的数据
    在Oracle数据库中,要删除重复的数据,可以使用以下方法: 使用ROWID和ROWNUM: DELETE FROM t...
    99+
    2024-04-09
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作