mysql group by having 实例代码
mysql group by having 实例
注意:使用group by的时候,SELECT子句中的列名必须为分组列。 如下实例必须包括name列名,因为name是作为group by分组的条件。
实例:
我的数据库中有一张员工工作记录表,表中的数据库如下:
mysql> SELECT * FROM employee_tbl; +------+------+------------+--------------------+ | id | name | work_date | daily_typing_pages | +------+------+------------+--------------------+ | 1 | John | 2007-01-24 | 250 | | 2 | Ram | 2007-05-27 | 220 | | 3 | Jack | 2007-05-06 | 170 | | 3 | Jack | 2007-04-06 | 100 | | 4 | Jill | 2007-04-06 | 220 | | 5 | Zara | 2007-06-06 | 300 | | 5 | Zara | 2007-02-06 | 350 | +------+------+------------+--------------------+ 7 rows in set (0.00 sec)
需求一:现在我需要查找出每个员工工作了多少天,这时就需要用到group by语句:
mysql> SELECT name, COUNT(*) -> FROM employee_tbl -> GROUP BY name; +------+----------+ | name | COUNT(*) | +------+----------+ | Jack | 2 | | Jill | 1 | | John | 1 | | Ram | 1 | | Zara | 2 | +------+----------+ 5 rows in set (0.04 sec)
需求二:我现在要查找工作天数大于一天的所有员工,这个时候就需要用到group by having语句
mysql> SELECT name, COUNT(*) -> FROM employee_tbl -> GROUP BY name having COUNT(*)>1 ; +------+----------+ | name | COUNT(*) | +------+----------+ | Jack | 2 | | Zara | 2 | +------+----------+ 2 rows in set (0.04 sec)
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
MySQL中无GROUP BY情况下直接使用HAVING语句的问题探究
今天有同学给我反应,有一张表,id是主键,这样的写法可以返回一条记录: "SELECT * FROM t HAVING id=MIN(id);" 但是只是把MIN换成MAX,这样返回就是空了: "SELECT * FROM t HAVING id=MAX(id);" 这是为什么呢? 我们先来做个试验,验证这种情况. 这是表结构,初始化两条记录,然后试验: root@localhost : plx 10:25:10> show create table t2G
-
Mysql中order by、group by、having的区别深入分析
order by 从英文里理解就是行的排序方式,默认的为升序. order by 后面必须列出排序的字段名,可以是多个字段名. group by 从英文里理解就是分组.必须有"聚合函数"来配合才能使用,使用时至少需要一个分组标志字段. 什么是"聚合函数"? 像sum().count().avg()等都是"聚合函数" 使用group by 的目的就是要将数据分类汇总. 一般如: select 单位名称,count(职工id),sum(职工工资)
-
MySql中having字句对组记录进行筛选使用说明
having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前.而 having子句在聚合后对组记录进行筛选. SQL实例: 一.显示每个地区的总人口数和总面积 SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region 先以region把返回记录分成多个组,这就是GROUP BY的字面含义.分完组后,然后用聚合函数对每组中的不同字段
-
mysql中group by与having合用注意事项分享
group by函数应该的使用应该是SELECT 列表中指定的每一列也必须出现在 GROUP BY 子句中,除非这列是用于聚合函数,但是今天帮同事调试一个mysql中的group by函数,让我大跌眼镜,当时感觉不可思议,然后回来做了个简化版试验,试验过程如下: mysql表结构 复制代码 代码如下: mysql> desc t;+---+----–+--+-–+---+---+| Field | Type | Null | Key | Default | Extra |+---+----–+-
-
mysql having用法解析
having的用法 having字句可以让我们筛选成组后的各种数据,where字句在聚合前先筛选记录,也就是说作用在group by和having字句前.而 having子句在聚合后对组记录进行筛选. SQL实例: 一.显示每个地区的总人口数和总面积. SELECT region, SUM(population), SUM(area) FROM bbc GROUP BY region 先以region把返回记录分成多个组,这就是GROUP BY的字面含义.分完组后,然后用聚合函数对每组中 的不同
-
MySQL无GROUP BY直接HAVING返回空的问题分析
有一张表,id是主键,这样的写法可以返回一条记录: 复制代码 代码如下: "SELECT * FROM t HAVING id=MIN(id);" 但是只是把MIN换成MAX,这样返回就是空了: 复制代码 代码如下: "SELECT * FROM t HAVING id=MAX(id);" 这是为什么呢?我们先来做个试验,验证这种情况.这是表结构,初始化两条记录,然后试验: 复制代码 代码如下: root@localhost : plx 10:25:10> s
-
mysql group by having 实例代码
mysql group by having 实例 注意:使用group by的时候,SELECT子句中的列名必须为分组列. 如下实例必须包括name列名,因为name是作为group by分组的条件. 实例: 我的数据库中有一张员工工作记录表,表中的数据库如下: mysql> SELECT * FROM employee_tbl; +------+------+------------+--------------------+ | id | name | work_date | daily_t
-
PHP无限循环获取MySQL中的数据实例代码
最近公司有个需求需要从MySQL获取数据,然后在页面上无线循环的翻页展示.主要就是一直点击一个按钮,然后数据从最开始循环到末尾,如果末尾的数据不够了,那么从数据的最开始取几条补充上来. 其实,这个功能可以通过JQ实现,也可以通过PHP + MYSQL实现,只不过JQ比较方便而且效率更高罢了. 每次显示10条数据. public function get_data($limit){ $sql="select * from ((select id,name from `mytable` limit
-
mysql事务处理用法与实例代码详解
MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务.行级锁.并发 3.Berkeley DB:支持事务 一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行.换言之,永远不会是完整的事务,除非该组内的每个单独的操作是成功的.如果在事务的任何操作失败,则整个事务将失败. 实际上,会俱乐部许多SQL查询到一个组中,将执行所有的人都一起作为事务的一部分. 事务的特性: 事务有以下
-
MySQL 元数据查看及实例代码
你可能想知道MySQL以下三种信息: 查询结果信息: SELECT, UPDATE 或 DELETE语句影响的记录数. 数据库和数据表的信息: 包含了数据库及数据表的结构信息. MySQL服务器信息: 包含了数据库服务器的当前状态,版本号等. 在MySQL的命令提示符中,我们可以很容易的获取以上服务器信息. 但如果使用Perl或PHP等脚本语言,你就需要调用特定的接口函数来获取. 接下来我们会详细介绍. 获取查询语句影响的记录数 PERL 实例 在 DBI 脚本中, 语句影响的记录数通过函数 d
-
mysql存数组的实例代码和方法
在很多的情况下,在编写存储过程中往往会用到数组,但是mysql中存储过程传入参数并没有可以直接传入数组的方法.在这种情况下我们只能退而求之或者说换个方式以字符串形式传入参数,然后在过程体中把字符串再转成数组?不过很遗憾告诉你,mysql并没有直接提供把字符串转数组的函数.现在你是不是有种想打人的感觉呢?不过,不用慌,此路不通,咱走另外的路,总有解决方法的.我们可以把传入的字符串截取成多个字符然后传入到临时表中,然后使用游标或者直接关联表过滤数据.这样就可以达到后面预期的效果了. 下面我们以一个例
-
workerman写mysql连接池的实例代码
首先要了解为什么用连接池,连接池能为你解决什么问题 连接池主要的作用: 1.减少与数据服务器建立TCP连接三次握手及连接关闭四次挥手的开销,从而降低客户端和mysql服务端的负载,缩短请求响应时间 2.减少数据库的并发连接数,即解决应用服务器过多导致的数据库 too many connections 问题 如果是为了解决问题1 则在workerman中数据库连接池不是最高效的方法,反而是自找麻烦的做法.由于PHP是单进程单线程的,使用PHP实现数据库连接池,肯定需要用单独的进程去做,那么就会涉及
-
MySQL与Mongo简单的查询实例代码
首先在这里我就不说关系型数据库与非关系型数据库之间的区别了(百度上有很多)直接切入主题 我想查询的内容是这样的:分数大于0且人名是bob或是jake的总分数 平均分数 最小分数 最大分数 计数 举这个实例来试试用MySQL和mongodb分别写一个查询 首先我们先做一些准备工作 MySQL的数据库结构如下 CREATE TABLE `new_schema`.`demo` ( `id` INT NOT NULL, `person` VARCHAR(45) NOT NULL, `score` VAR
-
ASP.NET操作MySql数据库的实例代码讲解
一.把MySql.Data.dll放到BIN目录下. 二.这是aspx.cs的全部源码,修改参数直接运行即可! using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; publ
-
MySQL 序列 AUTO_INCREMENT详解及实例代码
MySQL 序列 AUTO_INCREMENT详解及实例代码 MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列. 使用AUTO_INCREMENT MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列. 实例 以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长. mysql>
-
使用PHP+MySql实现微信投票功能实例代码
1. 投票主页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv=&quo
随机推荐
- 天意商务系统后台管理帐号破解html版
- 入门基础学习 ExtJS笔记(一)
- obix协议在java中的配置和使用详解
- React Native第三方平台分享的实例(Android,IOS双平台)
- ASP.NET中Label控件用法详解
- 漂亮! js实现颜色渐变效果
- 在javascript中如何得到中英文混合字符串的长度
- .NET中文乱码的解决方法分享
- 在Python中使用__slots__方法的详细教程
- 检查access数据库中是否存在某个名字的表的asp代码
- c#操作sql server2008 的界面实例代码
- jquery中的ajax如何返回结果而非回调方式即为同顺序执行
- Javascript动态引用CSS文件的2种方法介绍
- 解决java数值范围以及float与double精度丢失的问题
- C#虚方法的声明和使用实例教程
- Android开发者必备的十个工具介绍
- 如何过滤ospf中的lsa3
- Android Studio 升级到3.0后输入法中文状态下无法选词的终极解决方案
- 四步五分钟Spring4快速集成Swagger
- Git如何修改远程仓库地址