MYSQL学习笔记(三)
2015-07-09 23:14
537 查看
今天学习的是对记录的操作,着重复习一下SELECT查询中的GROUP BY语句,ORDER BY语句。
GROUP BY语句中SELECT指定的字段必须是“分组依据字段”,其他字段若想出现在SELECT中必须包含在聚合函数中,下面是常见的
聚合函数:
下面在MYSQL中创建一张顾客在水果店消费记录表,原表:
创建一张customers表:
把上面的记录插入到表中,查询得:
下面使用GROUP BY对customer字段进行分组;
SELECT `customer`,SUM(`apple`) ,SUM(`pear`), SUM(`banana`) FROM `customers` GROUP BY `customer`;
注意SELECT后面的字段要以逗号分隔开。
发现上面的数据毫无顺序可言,于是我使用ORDER BY语句进行排序:
MYSQL语句为:
SELECT `customer`,SUM(`apple`),SUM(`pear`),SUM(`banana`) FROM `customers` GROUP BY `customer` ORDER BY SUM(`apple`),SUM(`pear`),SUM(`banana`) DESC;
发现结果并不是我想要的,我预期的结果是SUM(`apple`),SUM(`pear`),SUM(`banana`)列都能进行降序排列,网上搜了一下才知道,当多个列要用到ORDER BY进行排序时,
它们是有先后顺序的,比如例子中的先对SUM(`apple`)这一列进行降序排列,如果排列后SUM(`apple`)中有相同的行,相同的部分再 以列SUM(`pear`)进行排序,以此类推,类似于C语言中的结构体快排。
无图无真相,下面来简单的测试一下:
在MYSQL中创建如下的一张表:
下面用语句SELECT * FROM `A` ORDER BY `aid` DESC,`bid`,`cid`;
运行结果如下:
注意ORDER BY 后面的字段之间要以逗号分隔开,ORDER BY默认的排序是升序,使用降序要用DESC。
网上有人说不能在GROUP BY和ORDER BY后面用字段的别名,对此,我测试了一下,发现是可以的。
GROUP BY语句中SELECT指定的字段必须是“分组依据字段”,其他字段若想出现在SELECT中必须包含在聚合函数中,下面是常见的
聚合函数:
下面在MYSQL中创建一张顾客在水果店消费记录表,原表:
创建一张customers表:
把上面的记录插入到表中,查询得:
下面使用GROUP BY对customer字段进行分组;
SELECT `customer`,SUM(`apple`) ,SUM(`pear`), SUM(`banana`) FROM `customers` GROUP BY `customer`;
注意SELECT后面的字段要以逗号分隔开。
发现上面的数据毫无顺序可言,于是我使用ORDER BY语句进行排序:
MYSQL语句为:
SELECT `customer`,SUM(`apple`),SUM(`pear`),SUM(`banana`) FROM `customers` GROUP BY `customer` ORDER BY SUM(`apple`),SUM(`pear`),SUM(`banana`) DESC;
发现结果并不是我想要的,我预期的结果是SUM(`apple`),SUM(`pear`),SUM(`banana`)列都能进行降序排列,网上搜了一下才知道,当多个列要用到ORDER BY进行排序时,
它们是有先后顺序的,比如例子中的先对SUM(`apple`)这一列进行降序排列,如果排列后SUM(`apple`)中有相同的行,相同的部分再 以列SUM(`pear`)进行排序,以此类推,类似于C语言中的结构体快排。
无图无真相,下面来简单的测试一下:
在MYSQL中创建如下的一张表:
下面用语句SELECT * FROM `A` ORDER BY `aid` DESC,`bid`,`cid`;
运行结果如下:
注意ORDER BY 后面的字段之间要以逗号分隔开,ORDER BY默认的排序是升序,使用降序要用DESC。
网上有人说不能在GROUP BY和ORDER BY后面用字段的别名,对此,我测试了一下,发现是可以的。
相关文章推荐
- [MySQL] - errno:150
- mysql之子查询
- mysql存储过程详解
- mysql的悲观锁和乐观锁
- mysql5.5.44 主从复制master and slave have equal MySQL server ids
- mysql数据库与web主机分离实验
- MySQL 插入中文乱码 及第三方视图软件显示中文乱码问题
- mysql并发基础知识
- MySQL 初步
- mysql拷贝表的几种方式
- mysql存储过程中sql的拼接
- MySQL数据类型及范围用法一览表
- mysql的一些关系
- PowerDesigner生成mysql字段comment 注释
- MySQL的varchar长度问题
- MySQL学习之——索引篇
- mybatis调用mysql存储过程返回结果集
- 12. mysql show status
- MYSQL 启动错误193
- MySQL数据库表名、列名、别名区分大小写的问题