Mysql去重查询---DISTINCT、group by

article/2025/9/18 20:12:33

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • DISTINCT
    • 语法:
        • 关键词 distinct用于返回唯一不同的值。
    • 表结构
    • 案例
        • SELECT DISTINCT age FROM emp1
        • SELECT DISTINCT age ,NAME FROM emp1
        • SELECT DISTINCT * FROM emp1
    • COUNT统计
        • SELECT COUNT(DISTINCT age) FROM emp1
        • SELECT COUNT(DISTINCT NAME) FROM emp1
        • SELECT age,COUNT(DISTINCT NAME) FROM emp1 GROUP BY age;
  • group by 去重
    • 用法:
    • 表结构
    • 案例:
        • SELECT age, COUNT(age) FROM emp1 GROUP BY age;
    • 根据age去重 ,如果age重复,记录选id最小的
    • 查找所有age重复的 记录
        • SELECT age FROM emp1 GROUP BY age HAVING COUNT(*)>1
    • 查找所有age不重复的 记录
  • 删除重复的数据
    • 1. age重复的数据,,,只保留id最小的,其余删除
        • ==低版本 mysql 有可能报错==
    • 2.只要age重复的数据 都删除,不保留


DISTINCT

语法:

关键词 distinct用于返回唯一不同的值。

  • distinct必须放在开头

表结构

在这里插入图片描述

案例

SELECT DISTINCT age FROM emp1

在这里插入图片描述

SELECT DISTINCT age ,NAME FROM emp1

实际上是根据age 和 NAME 两个字段来去重的在这里插入图片描述

SELECT DISTINCT * FROM emp1

在这里插入图片描述

COUNT统计

  • 统计字段列重复的个数

SELECT COUNT(DISTINCT age) FROM emp1

在这里插入图片描述

SELECT COUNT(DISTINCT NAME) FROM emp1

在这里插入图片描述

SELECT age,COUNT(DISTINCT NAME) FROM emp1 GROUP BY age;

在这里插入图片描述

group by 去重

用法:

在这里插入图片描述

表结构

在这里插入图片描述

案例:

SELECT age, COUNT(age) FROM emp1 GROUP BY age;

在这里插入图片描述

根据age去重 ,如果age重复,记录选id最小的

  • 法1
SELECT * FROM emp1 
WHERE id IN ( SELECT MIN(id) FROM emp1 GROUP BY age
)

在这里插入图片描述

  • 法2
SELECT t1.id ,t1.name ,t1.age
FROM ( 
SELECT  id,NAME,age FROM  emp1 
) t1 
INNER JOIN
( SELECT MIN(id) AS id FROM emp1 GROUP BY age
)t2  ON t1.id=t2.id

在这里插入图片描述

查找所有age重复的 记录

SELECT age FROM emp1 GROUP BY age HAVING COUNT(*)>1

在这里插入图片描述

  • 方法1
SELECT * FROM emp1 
WHERE age IN (SELECT age FROM emp1 GROUP BY age HAVING COUNT(*)>1
)

在这里插入图片描述

  • 方法2
SELECT * FROM emp1 a
INNER JOIN  (SELECT age FROM emp1 GROUP BY age HAVING COUNT(*)>1
)b ON  a.age = b.age

在这里插入图片描述

查找所有age不重复的 记录

  • 方法1
SELECT * FROM emp1
WHERE age NOT IN (SELECT age FROM emp1 GROUP BY age HAVING COUNT(*)>1
)

在这里插入图片描述

  • 方法2
SELECT * FROM emp1 a
LEFT JOIN  (SELECT age FROM emp1 GROUP BY age HAVING COUNT(*)>1
)b ON  a.age = b.age
WHERE  b.age IS null

在这里插入图片描述

删除重复的数据

1. age重复的数据,只保留id最小的,其余删除

DELETE FROM emp1
WHERE id NOT IN(SELECT MIN(id) minid FROM emp1
GROUP BY age
)

在这里插入图片描述

低版本 mysql 有可能报错

在这里插入图片描述

解决方法是:需要先把查询处理的id结果,as 一张表,再做delete操作,调整如下:

DELETE FROM emp1
WHERE id NOT IN
(SELECT a.id  FROM (SELECT MIN(id)AS id FROM emp1 GROUP BY age ) a
)

在这里插入图片描述

2.只要age重复的数据 都删除,不保留

DELETE FROM emp1
WHERE age  IN
( SELECT age AS id FROM emp1 GROUP BY age HAVING COUNT(*)>1  
)

在这里插入图片描述


http://chatgpt.dhexx.cn/article/gEtQZOiZ.shtml

相关文章

MYSQL去重方法汇总

表数据 备注: id: 任务id;name: 参与人name; 1:distinct 1.1 -- 根据任务ID去重 SELECT DISTINCT id FROM test;1.2 -- 任务总数 SELECT COUNT(DISTINCT id) FROM test;1.3 distinct 通常效率较低。它不适合用来展示去重后具体的值,一般与…

mysql 怎么去重2维数组,mysql去重查询

在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录,但是实际中我们往往用distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段&#xff…

MySQL去重查询只保留一条最新的记录

需求:MySQL去重查询只保留一条最新的记录 文章目录 易错的写法正确的写法-1正确的写法-2正确的写法-3 易错的写法 表结构与初始数据如下SQL文件: -- MySQL dump 10.13 Distrib 8.0.28, for Linux (x86_64) -- -- Host: localhost Database: test01…

MySQL去重查询

在使用MySQL时,有时需要查询出某个字段不重复的记录,这时可以使用mysql提供的distinct这个关键字来过滤重复的记录, 实例: select distinct name,id from user;,这样的结果为: distinct name,id 这样的my…

mysql去重查询的三种方法

文章目录 前言一、插入测试数据二、剔除重复数据方法1.方法一:使用distinct2.方法二:使用group by3.方法三:使用开窗函数 总结 前言 数据库生成环境中经常会遇到表中有重复的数据,或者进行关联过程中产生重复数据,下面…

易基因|RNA m7G甲基化测序(m7G-MeRIP-seq)

N7-甲基鸟苷(N7-methylguanosine,m7G)是真核生物tRNA、rRNA和mRNA 5cap中最丰富的修饰之一。作为一种重要的表观遗传修饰,m7G RNA甲基化在基因表达、加工代谢、蛋白质合成、转录稳定等方面发挥着重要的作用,参与疾病发…

GeneXus学习(二)基本对象(持续更新)

GeneXus对象很多,笔者持续更新每个对象的用法 一、Transaction GeneXus中的Transaction是用于描述对象的模型。 英文描述: Describes an object or actor of reality, defining the structure of the database, business rules, and the UI for data…

sgRNAs基因编辑

CRISPR-Cas9知识学习笔记 https://www.163.com/dy/article/FGCP58KC0532AN5N.html https://crispr.dbcls.jp CRISPR(clustered regularly interspaced short palindromic repeats,成簇的规律间隔短回文重复序列)和CRISPR-associated protein …

敏捷开发与GeneXus哲学

译者前言 在GeneXus的重要创始人和核心成员的观念里,在做一件重大事情前往往需要进行大量的思考,尤其是所要从事事业背后的本质及相关的哲学问题进行思考,然后要研究对应的方法论。在上述问题得到明确的答案后,才开始开展工作。 …

【Reactome 下载所有通路基因集】

Reactome 下载所有通路基因集 Reactome 下载所有通路基因集Reactome 介绍ReactomePA官网下载处理 Reactome 下载所有通路基因集 目前,网上有许多下载 KEGG、GO 数据库中所有富集通路的基因集方法,但是相对于 Reactome 来说却几乎没有。所以,…

易基因|一种全新的检测DNA羟甲基化的技术:ACE-Seq

大家好,这里是专注表观组学十余年,领跑做组学科研服务的易基因。今天给大家介绍一种全新的检测DNA羟甲基化的技术:APOBEC-coupled epigenetic sequencing,简称【ACE-seq】。 前言 DNA序列中胞嘧啶(C)5’ 碳…

已知基因名,如何在genbank中查询基因序列?

以人类YBX1为例,首先进入NIH官网,如下图,database选择gene,在输入框中输入自己需要找的基因名,点击搜索。 搜索后在下方search result中会显示很多结果,分别是不同物种的。点击人类的YBX1进入详情页面。 进…

基因组学(Geonomics)

什么是基因组学? 基因组学(Geonomics)是一门研究基因组(Genome)的科学。 什么是基因组? 我们每个人都是由上万亿个细胞构成的,每个细胞中都包含一套完整的生命密码,也就是DNA,而基因组就是指一个细胞中包含的所有的DNA。我们的…

系统安全: GeneXus 新身份验证方案

GAM 是 GeneXus 访问管理器,用于在您的应用程序中实现身份验证和授权,此功能为GeneXus内置功能。 介绍前我们先了解安全和身份验证领域正在发生的事情。 Auth0关于市场上可用的身份验证方案的调查显示: 28% 提供多因素身份验证,这…

Jetson Xavier NX

Jetson Xavier NX 提示:记录学习过程,倘若有抄袭请原谅 文章目录 Jetson Xavier NX前言一、安装系统二、烧镜像三、启动系统打开风扇先 四、配置VNC(此处借鉴)五、安装中文输入法六、安装cuda七、安装pytorch跟torchvision八、试试…

GeneXus学习记录——创建KB(KnowledgeBase/知识库)

GeneXus安装好之后,怎么创建一个知识库呢? 只需要点文件-新建-知识库,就可以了。 弹出的窗口填写KB名字,选择保存目录,点创建。 这里有一个注意点:数据库排序规则。 点开高级,可以看到这里SQL…

GeneXus试用报告

GeneXus试用报告 (上) GeneXus 自称为业界第一款智能开发工具,由乌拉圭的ARTech公司出品,通过描述应用软件的知识库,可以自动生成数据库模型,自动生成.net或Java两大平台的代码。 最近试用了GeneXus,并计划用GeneXus来…

GeneXus学习记录——Transaction

GeneXus中的Transaction是用于描述对象的模型。 英文描述: Describes an object or actor of reality, defining the structure of the database, business rules, and the UI for data manipulation. 翻译了一下: 描述真实的对象或参与者,定…

GeneXus学习记录

最近在网上看到了一个开发工具,叫GeneXus,很有特色的一个平台,在这里记录一下学习过程。 这个是中文官网GeneXus,这个是Global官网GeneXus。 看了一下介绍,很有特点,贴两张图感受一下 利用算法自动分析…

GeneXus学习(一)安装与介绍

转:https://blog.csdn.net/csdn_1573/article/details/120081202GeneXus安装 开始学习GeneXus,第一步就是环境的搭建。 说明文档 查看官网上学习中心,下方有一个安装及申请授权的说明文档。 按照文档中的步骤来做,除了GeneXus软件…