MYSQL GROUP BY用法详解

作者:Landpack 时间:2024-01-29 10:22:05 

背景介绍

最近在设计数据库的时候因为开始考虑不周,所以产生了大量的重复数据。现在需要把这些重复的数据删除掉,使用到的语句就是Group By来完成。为了进一步了解这条语句的作用,我打算先从简单入手。

建一个测试表

create table test_group(id int auto_increment primary key, name varchar(32), class varchar(32), score int);

查看表结构

desc test_group

MYSQL GROUP BY用法详解

插入数据

MYSQL GROUP BY用法详解

测试开始

我想知道当前每一个班级里面最高分数的同学是谁。

select name, class , max(score) from test_group group by class;

MYSQL GROUP BY用法详解

好现在可以插入几条重复的数据。

insert into test_group(name, class, score)values('repeat','B',89);

MYSQL GROUP BY用法详解
现在要过滤掉重复的数据,保留最新的那条记录。一般我们假设最新的记录是最后插入的那条,所以它的ID应该是最大的那条。

select name, class, max(id) from test_group group by name;

MYSQL GROUP BY用法详解

可以发现,我们关注那个项的重复性就把它放到gourp by后面。这样我们就可以过滤掉那些与这个项重复的记录啦。现在我们得到了我们需要的数据,我们下一步就是把那些重复的数据删除。为了区分我们过滤出来的数据记录与原有的记录,我们可以给id取一个别名。

select name, class, max(id) as max_id from test_group group by name;

MYSQL GROUP BY用法详解

下一步就是把这些关心的数据保留下来,我先把这些数据的id提取出来。因为这个是唯一确定一条记录的。

select max_id from (select name, class, max(id) as max_id from test_group group by name)b;

MYSQL GROUP BY用法详解

下面就是删除操作了。思路就是删除那些数据ID不在我们查询结果里面的记录。为了方便操作后对数据的对比,我先进行一次全部查询。

select * from test_group;

MYSQL GROUP BY用法详解

执行删除操作。

delete from test_group where id not in (select max_id from (select name, class, max(id) as max_id from test_group group by name)b);

最后查看结果。

MYSQL GROUP BY用法详解

总结

MySQL操作还是很灵活的,之前一直喜欢用ORM现在感觉直接使用MYSQL省去了很多事。如果你有更好更高效的方式就请你分享分享吧~~

标签:mysql,group,by
0
投稿

猜你喜欢

  • 快速解决cv2.imread()读取图像为BGR的问题

    2023-03-11 12:13:16
  • 实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法

    2024-05-11 09:19:05
  • python with提前退出遇到的坑与解决方案

    2023-12-24 15:02:35
  • Python监控服务器实用工具psutil使用解析

    2021-10-14 03:16:24
  • 最新MySql8.27主从复制及SpringBoot项目中的读写分离实战教程

    2024-01-19 15:40:27
  • Python压缩解压缩zip文件及破解zip文件密码的方法

    2023-04-20 10:30:30
  • 浅谈Python 的枚举 Enum

    2021-02-01 16:42:15
  • MySQL表设计优化与索引 (四)

    2010-10-25 19:50:00
  • 用python生成一张壁纸实例代码

    2022-06-06 10:26:51
  • asp error对象基础

    2008-08-04 13:25:00
  • Python 读写文件的操作代码

    2021-11-16 02:43:44
  • MySQL创建数据表时设定引擎MyISAM/InnoDB操作

    2024-01-20 18:28:58
  • 用SQL语句添加删除修改字段、一些表与字段的基本操作、数据库备份等

    2011-12-01 07:53:11
  • MySQL动态字符串处理DYNAMIC_STRING

    2024-01-26 01:20:19
  • uni-app网络请求、数据缓存实例详解

    2023-08-09 03:49:12
  • Asp中如何设计跨越域的Cookie

    2008-10-24 09:46:00
  • Python sklearn分类决策树方法详解

    2023-04-20 17:14:13
  • Python面向对象之反射/自省机制实例分析

    2022-07-27 06:57:53
  • 用CSS实现图片等比例缩放

    2008-01-18 21:10:00
  • python修改包导入时搜索路径的方法

    2023-05-12 07:40:23
  • asp之家 网络编程 m.aspxhome.com