一、语法

group by语句根据一个或多个列对结果集进行分组,在分组后,我们的select后面只能跟着group by的字段,或聚合函数(count、sum、avg等):

语法如下:

SELECT column_name, function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

二、代码例子:

首先将数据导入数据库中:

//创建数据库
create database if not exists test default charset utf8 collate utf8_general_ci;SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;//创建数据库表
DROP TABLE IF EXISTS `employee_tb`;
CREATE TABLE `employee_tb` (`id` int(11) NOT NULL,`name` char(10) NOT NULL DEFAULT '',`date` datetime NOT NULL,`singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数',PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;//插入数据
BEGIN;
INSERT INTO `employee_tb` VALUES ('1', 'name_1', '2016-04-22 15:25:33', '1'), ('2', 'name_2', '2016-04-20 15:25:47', '3'), ('3', 'name_3', '2016-04-19 15:26:02', '2'), ('4', 'name_2', '2016-04-07 15:26:14', '4'), ('5', 'name_1', '2016-04-11 15:26:40', '4'), ('6', 'name_1', '2016-04-04 15:26:54', '2');
COMMIT;SET FOREIGN_KEY_CHECKS = 1;

导入成功后,观察下我们的数据:


接下来我们使用group by语句将数据表按名字进行分组,并统计每个人有多少条记录:

三、常用用法

3.1 去重

去重是我们经常会遇到的问题,打个比方,由于各种原因(不管是业务上的还是说脏数据),现在我们有两条重复的数据(除了ID,其余的字段都是相同的):

如果我们希望只留下某一条记录作为查询结果,那么可以写下如下的SQL:

select * from employee_tb
where id in(select min(id)from employee_tbgroup by name,date,singin
);

输出:

上面的去重是一个典型操作,在很多时候我们使用了group by了以后,还想要查询结果中包含group by之外的字段(一般情况下,我们都不可能将group by涵盖所有的字段),我们就可以像上面那样,将查询后的结果作为子查询,放在外部查询的where子句后,这样外部查询是可以select出其他字段的。

参考-MySQL分组
参考-在工作中常用到的SQL

MySQL group by语句用法相关推荐

  1. mysql数据库select语句用法_mysql学习笔记之完整的select语句用法实例详解

    本文实例讲述了mysql学习笔记之完整的select语句用法.分享给大家供大家参考,具体如下: 本文内容: 完整语法 去重选项 字段别名 数据源 where group by having order ...

  2. 《零基础》MySQL GROUP BY 语句(十九)

    GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT column_name, funct ...

  3. MySQL GROUP BY 语句

    GROUP BY 语句根据一个或多个列对结果集进行分组. 在分组的列上我们可以使用 COUNT, SUM, AVG,等函数. GROUP BY 语法 SELECT column_name, funct ...

  4. 更新数据限制条数 mysql_mysql update limit mysql更新限制语句用法

    mysql更新时,要更新记录中某个区间的数据,只能用WHERE条件来限制了, 用LIMIT只能限制更新多少条!测试如下: UPDATE t_shop SET shop_code = '1' ORDER ...

  5. mysql数据库select语句用法_mysql数据库select查询语句简单用法

    mysql select简单用法 1.select语句可以用回车分隔$sql="select * from article where id=1"和$sql="selec ...

  6. MySQL Order by 语句用法与优化详解

    Order by语句是用来排序的,经常我们会使用到Order by来进行排序,下面我给大家来讲讲Order by用法与优化排序,有需要的同学可参考 MySQL Order By keyword是用来给 ...

  7. mysql中declare语句用法_MySQL declare语句用法介绍

    MySQL declare语句是我们经常用到的语句,下文就为您举例说明了MySQL declare语句的用法,希望对您学习MySQL declare语句的使用能有所帮助. MySQL declare语 ...

  8. mysql中declare语句用法详解

    mysql中的DECLARE语句是在复合语句中声明变量的指令.  (1)Example with two DECLARE statements  两个DECLARE语句的实例  CREATE PROC ...

  9. mysql中declare语句用法_mysql declare怎么用

    Q4:mysql declare cursor只能放在前面吗 本文中介绍了一个MySQL的存储过程,其中涉及Cursor的使用 示例如下: 复制代码 代码如下: CREATE PROCEDURE `j ...

  10. MySQL之alter语句用法总结

    2019独角兽企业重金招聘Python工程师标准>>> 1:删除列 ALTER TABLE [表名字] DROP [列名称] 2:增加列 ALTER TABLE [表名字] ADD ...

最新文章

  1. pytorch自定义交叉熵损失函数
  2. 开发日记-20190422 关键词 插件化(1)概述
  3. Ubantu-16.04 eclipse安装
  4. 常用的认证机制之session认证和token认证
  5. linux 内核空间占用cpu百分比过高,linux下分析java程序占用CPU、内存过高
  6. 在腾讯云云函数计算上部署.NET Core 3.1
  7. amazon云服务_亚马逊Simple Worklfow服务的骆驼演示
  8. linux php cgi.sock,nginx中unix:/tmp/php-cgi.sock错误解决解决
  9. Solarized ----vim配色方案
  10. 一夜爆火的SLAM技术即将颠覆哪些领域
  11. 番外篇:根据学习程度划分程序员的级别
  12. backup exec删除备份文件
  13. 【Linux】POSIX信号量
  14. Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features(2016)
  15. mysql四种隔离级别
  16. HTML+CSS+JS网页设计期末课程大作业 web前端开发技术 web课程设计 后台管理系统。
  17. 计算机病毒爆发的新闻,从两次勒索病毒爆发聊聊计算机安全重要性
  18. oracle中的fms和erp的区别,MRP系统和ERP系统有什么区别?
  19. 百度云盘云知梦php_[云知梦]WEB前端开发_WEB前端新手入门视频教程[百度云盘]
  20. [图形学] 布料仿真(质点弹簧模型)

热门文章

  1. Spring Boot 打包成的可执行 jar ,为什么不能被其他项目依赖?
  2. vue前台导出zip文件_在vue.js中使用JSZip实现在前端解压文件的方法
  3. 最难的几道Java面试题,看看你跪在第几个?
  4. 2019年9月全国程序员工资统计,你处于什么位置?
  5. Android仿京东、天猫app的商品详情页的布局架构, 以及功能实现
  6. 问题的分析与解决(培训总结)
  7. Android View框架总结(七)View事件分发机制
  8. python基础篇——元组
  9. c语言spoc期末考试及答案,MOOC-SPOC测试题(部分答案)(至数组一章)-C语言-宣城校区2016年.docx...
  10. springboot redis token_Spring Boot + Redis 实现接口幂等性,看这篇就太好了!