广告
返回顶部
首页 > 资讯 > 精选 >一次SQL怎么查重及去重
  • 507
分享到

一次SQL怎么查重及去重

2023-06-29 11:06:51 507人浏览 八月长安
摘要

这篇文章主要为大家展示了“一次sql怎么查重及去重”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“一次SQL怎么查重及去重”这篇文章吧。前言在使用SQL提数的时候,常会遇到表内有重复值的时候,就需

这篇文章主要为大家展示了“一次sql怎么查重及去重”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“一次SQL怎么查重及去重”这篇文章吧。

    前言

    在使用SQL提数的时候,常会遇到表内有重复值的时候,就需要做去重,本文归类了常用方法。

    ⛳️ 1.distinct

    题目:现在运营需要查看用户来自于哪些学校,请从用户信息表中取出学校的去重数据

    示例:user_profile

    一次SQL怎么查重及去重

    mysql>SELECT DISTINCT university FROM user_profile;
    ????????根据示例,查询返回以下结果

    一次SQL怎么查重及去重

    ????????小贴士:

    SQL中关键词distinct去重:
    英语中distinct 代表独一无二的意思,
    他在SQL表示去重的意思:比如本题中university这一列出现了两次北京大学,
    使用distinct进行去重查询后,则北京大学只出现一次。
    distinct 通常效率较低
    distinct 使用中,放在 select 后边,对后面所有的字段的值统一进行去重

    ???????? 拓展:

    题目:现在运营需要查看用户的总数
    select count(distinct university) from user_profile;

    ⛳️ 2.group by

    ???????? 举个栗子,现有这样一张表 task

    一次SQL怎么查重及去重

    备注:
    task_id: 任务id;
    order_id: 订单id;
    start_time: 开始时间
    注意:一个任务对应多条订单

    题目:列出任务总数

    ????????????????根据示例,查询方法如下:

    列出 task_id 的所有唯一值(去重后的记录,null也是值)

    select task_idfrom Taskgroup by task_id;

    任务总数

    select count(task_id) task_numfrom (select task_idfrom Taskgroup by task_id) tmp;

    ⛳️ 3.row_number 窗口函数

    ???????? 举个栗子,现有这样一张表 task

    一次SQL怎么查重及去重

    备注:
    task_id: 任务id;
    order_id: 订单id;
    start_time: 开始时间
    注意:一个任务对应多条订单

    题目:查询整个表重复的数据

    ????????根据示例,查询方法如下:

    – 在支持窗口函数的 sql 中使用

    select count(case when rn=1 then task_id else null end) task_numfrom (select task_id, row_number() over (partition by task_id order by start_time) rnfrom Task) tmp;

    ????????小贴士:

    Mysql8.0 中可以利用 ROW_NUMBER(),DENSE_RANK(),RANK() 三个窗口函数来实现排序

    需要注意的一点是 as 后的别名,千万不要与前面的函数名重名,否则会报错

    下面给出这三种函数实现排名的案例:

    –三条语句对于上面三种排名

    select xuehao,score, ROW_NUMBER() OVER(order by score desc) as row_r from scores_tb;select xuehao,score, DENSE_RANK() OVER(order by score desc) as dense_r from scores_tb;select xuehao,score, RANK() over(order by score desc) as r from scores_tb;

    – 一条语句也可以查询出不同排名

    SELECT xuehao,score,ROW_NUMBER() OVER w AS ‘row_r',DENSE_RANK() OVER w AS ‘dense_r',RANK() OVER w AS ‘r'FROM scores_tbWINDOW w AS (ORDER BY score desc);

    ⛳️ 4.删除重复数据

    创建测试数据

    我们创建一个人员信息表并在里面插入一些重复的数据

    CREATE TABLE Person(id int auto_increment primary key comment ‘主键',Name VARCHAR(20) NULL,Age INT NULL,Address VARCHAR(20) NULL,Sex CHAR(2) NULL);
    INSERT INTO Person(ID,Name,Age,Address,Sex)VALUES( 1, ‘张三', 18, ‘北京路18号', ‘男' ),( 2, ‘李四', 19, ‘北京路29号', ‘男' ),( 3, ‘王五', 19, ‘南京路11号', ‘女' ),( 4, ‘张三', 18, ‘北京路18号', ‘男' ),( 5, ‘李四', 19, ‘北京路29号', ‘男' ),( 6, ‘张三', 18, ‘北京路18号', ‘男' ),( 7, ‘王五', 19, ‘南京路11号', ‘女' ),( 8, ‘马六', 18, ‘南京路19号', ‘女' );

    一次SQL怎么查重及去重

    题目:数据库中存在重复记录,删除保留其中一条

    我们发现除了自增长ID不同以为,有几条其他字段都重复的数据出现

    ???? 第一步:找出重复的数据

    mysql>SELECT MAX(ID) ID,Name,Age,Address,SexFROM PersonGROUP BY Name,Age,Address,SexHAVING COUNT(1)>1

    一次SQL怎么查重及去重

    ????????小贴士:

    HAVING将分组后统计出来的数量大于1的数据行,就是我们要找的重复数据

    上面用Max函数或者Min函数均可,只是为了保证取出来的数据的唯一性。

    ???? 第二步:删除重复的数据

    其实我们数据库中最后要保留的结果就是第二步中查询出来的数据,

    我们把其他的数据删除即可。

    怎么删除呢?我们使用ID来排除。

    DELETE FROM PersonWHERE EXISTS(SELECT * FROM (SELECTMAX(ID) ID,Name,Age,Address,SexFROM PersonGROUP BY Name,Age,Address,SexHAVING COUNT(1)>1) TWHERE Person.Name=T.NameAND Person.Age=T.AgeAND Person.Address=T.AddressAND Person.Sex=T.SexAND Person.ID<T.ID)

    执行完后重新查询Person表结果如下

    马六因为只有一条记录,所以没有参与去重,直接显示。

    一次SQL怎么查重及去重

    以上是“一次SQL怎么查重及去重”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

    --结束END--

    本文标题: 一次SQL怎么查重及去重

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

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

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • 一次SQL怎么查重及去重
      这篇文章主要为大家展示了“一次SQL怎么查重及去重”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“一次SQL怎么查重及去重”这篇文章吧。前言在使用SQL提数的时候,常会遇到表内有重复值的时候,就需...
      99+
      2023-06-29
    • 一次SQL如何查重及去重的实战记录
      目录前言⛳️1.distinct⛳️2.groupby⛳️3.row_number窗口函数⛳️4.删除重复数据第一步:找出重复的数据第二步:删除重复的数据总结前言 在使用SQL提数的...
      99+
      2022-11-13
    • sql怎么查找重复多次的数据
      要查找重复多次的数据,可以使用GROUP BY和HAVING子句来进行筛选。以下是一个示例查询语句,用于查找在表中重复3次以...
      99+
      2023-08-09
      sql
    • sql中去重查询的方法是什么
      在SQL中,可以使用DISTINCT关键字来进行去重查询。DISTINCT关键字用于删除SELECT语句返回结果中重复的行。...
      99+
      2023-09-16
      sql
    • plsql怎么根据一个字段去重查询
      在PL/SQL中,可以使用DISTINCT关键字来根据一个字段进行去重查询。下面是一个示例代码:```plsqlDECLARE-- ...
      99+
      2023-09-13
      plsql
    • Python中怎么重写SQL查询
      本篇文章为大家展示了Python中怎么重写SQL查询,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。如果电脑中没有pandas包,则需要先安装一下:Conda install pa...
      99+
      2023-06-16
    • sql怎么对多个字段联合去重
      可以使用DISTINCT关键字来对多个字段联合去重。```sqlSELECT DISTINCT field1, field2...
      99+
      2023-10-11
      sql
    • mysql字段去重查询怎么实现
      要实现MySQL字段的去重查询,可以使用DISTINCT关键字。可以按照以下步骤进行操作:1. 使用SELECT语句查询需要...
      99+
      2023-09-13
      mysql
    • SQL中怎么查询重复记录
      今天就跟大家聊聊有关SQL中怎么查询重复记录,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、查找表中多余的重复记录,重复记录是根据单个字段(peo...
      99+
      2022-10-18
    • SQL语句怎么去掉重复记录并获取重复记录
      这篇文章将为大家详细讲解有关SQL语句怎么去掉重复记录并获取重复记录,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。SQL语句去掉重复记录,获取重复记录 --...
      99+
      2022-10-18
    • mysql怎么根据某一字段去重
      在MySQL中,可以使用DISTINCT关键字根据某一字段去重。具体的语法如下:```SELECT DISTINCT col...
      99+
      2023-08-30
      mysql
    • oracle怎么根据某一字段去重
      Oracle可以使用DISTINCT关键字或者GROUP BY子句来根据某一字段进行去重操作。1. 使用DISTINCT关键字:``...
      99+
      2023-08-14
      oracle
    • oracle怎么查询并去掉重复数据
      在Oracle中,可以使用`SELECT DISTINCT`关键字来查询并去掉重复数据。具体的查询语法如下:```SELEC...
      99+
      2023-08-31
      oracle
    • JavaScript 中怎么实现数组去重并统计重复元素出现的次数
      这篇文章将为大家详细讲解有关JavaScript 中怎么实现数组去重并统计重复元素出现的次数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、方法一var&...
      99+
      2022-10-19
    • 怎么使用SQL语句去掉重复的记录
      今天就跟大家聊聊有关怎么使用SQL语句去掉重复的记录,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。海量数据(百万以上),其中有些全部字段都相同,有些...
      99+
      2022-10-19
    • 怎么在Linux上一次性批量重命名一组文件
      这篇文章给大家分享的是有关怎么在Linux上一次性批量重命名一组文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 rename 命令的用法。与 mv 命令不同,rename 命令不是简单地指定新旧文件...
      99+
      2023-06-16
    • SQL分组怎么实现去重且合并相似数据
      要实现SQL分组去重且合并相似数据,可以使用GROUP BY子句结合聚合函数和DISTINCT关键字来实现。具体步骤如下:1. 使用...
      99+
      2023-08-08
      SQL
    • php一维数组怎么升序排序(不去重)
      升序排序的三种方法:1、使用sort()函数,可对数组元素进行升序排序,语法“sort($arr,排序模式);”;2、使用asort()函数,可根据关联数组的键值进行升序排列,语法“asort($arr,排序模式)”;3、使用ksort()...
      99+
      2022-09-13
    • sql怎么查询重复数据并显示记录
      可以使用SELECT语句结合GROUP BY和HAVING子句来查询重复数据并显示记录。以下是一个示例:假设有一个名...
      99+
      2023-09-15
      sql
    • 怎么用Python制作一个文件去重小工具
      这篇文章主要讲解了“怎么用Python制作一个文件去重小工具”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python制作一个文件去重小工具”吧!前言常常在下载网络素材时有很多的重复文...
      99+
      2023-06-29
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作