MYSQL中GROUP BY不包含所有的非聚合字段时的注意事项
类别:数据库 浏览量:2206
时间:2016-4-27 MYSQL中GROUP BY不包含所有的非聚合字段时的注意事项
MYSQL中GROUP BY不包含所有的非聚合字段时的注意事项一、下列语句在MySql中是合规的
select count(1),task_type,status from action where biz_date='20141014' group by status
select count(1),task_type from action where biz_date='20141014' group by status
二、使用时易出现的问题
1、实例数据
mysql> select * from test;
+----+-------+------+-------+
| id | name | age | class |
+----+-------+------+-------+
| 1 | qiu | 22 | 1 |
| 2 | liu | 42 | 1 |
| 4 | zheng | 20 | 2 |
| 3 | qian | 20 | 2 |
| 0 | wang | 11 | 3 |
| 6 | li | 33 | 3 |
+----+-------+------+-------+
6 rows in set (0.00 sec)
2、找到每个class里面的最大的age的基本信息
如下的sql语句,则输出结果不准确
mysql> select id,name,max(age),class from test group by class;
+----+-------+----------+-------+
| id | name | max(age) | class |
+----+-------+----------+-------+
| 1 | qiu | 42 | 1 |
| 4 | zheng | 20 | 2 |
| 0 | wang | 33 | 3 |
+----+-------+----------+-------+
3 rows in set (0.00 sec)
备注
虽然找到的age是最大的age,但是与之匹配的用户信息却不是真实的信息
原因
如果 id,name 不能唯一确定的话,mysql会随机选一行做为值。
三、使用是注意事项
1、这个写法不标准, 因为假如没group的字段如果有多个值, 可能导致这个字段会有不确定的值,且不利于数据库移植
2、假如可以确定这个字段都是重复的值(譬如多表联接), 那就没有这方面的困扰,反而会简化SQL语句,也有可能会提高性能,可以推荐这种方式查询
例如
select A.id, B.desc, B.XXX, B.YYY SUM(A.AMT)
FROM A
join b on a.id=b.id
where a.id=? and b.xxx=?
group a.id
标签:mysql
您可能感兴趣
- mysql查询很慢怎么回事(MySQL Like模糊查询速度太慢如何解决)
- mysql并发控制的重要方式(Mysql服务添加 iptables防火墙策略的方案)
- mysql慢日志查询作用(MySQL 慢查询日志的开启与配置)
- MySQL中使用mysqldump命令备份
- hive分析后如何录入mysql(hive从mysql导入数据量变多的解决方案)
- mysql中行列转换(mysql 行列转换的示例代码)
- mysqllinux解压版安装教程学习(解决Linux安装mysql 在/etc下没有my.cnf的问题)
- mysql建立索引的主要目的(浅谈Mysql哪些字段适合建立索引)
- mysql数值类型图解(详解mysql持久化统计信息)
- mysql数据库调优技术大全(Mysql数据库性能优化三分表、增量备份、还原)
- mysql8.0.15安装详细教程(Mysql8.0.22解压版安装教程小白专用)
- laravel mysql 操作方式(Laravel使用原生sql语句并调用的方法)
- mysql8.0详解(MySQL 8.0 的 5 个新特性,太实用了!)
- mysql索引原理及调优(mysql高级学习之索引的优劣势及规则使用)
- centos如何安装mysql8.0版本(Centos7下安装MySQL8.0.23的步骤小白入门级别)
- mysql常见的存储引擎(如何选择MySQL的存储引擎?)
- 8月再见 9月你好(8月再见)
- 魔兽世界 设计师爆料,原始版本并无PVP,跨阵营属于返璞归真(魔兽世界设计师爆料)
- 吐槽完《弧光大作战》之后,我们和设计师聊了聊魔兽首款手游的立项初衷和未来(吐槽完弧光大作战之后)
- 魔兽争霸3自定义战役少年杰雷 2(魔兽争霸3自定义战役少年杰雷)
- 今日菜价 芥兰涨幅最高 1.33 ,花菜降幅最高 3.10(今日菜价芥兰涨幅最高)
- 今日菜价 椰菜涨幅最高 3.25 ,水空心菜降幅最高 2.58(今日菜价椰菜涨幅最高)
热门推荐
- navicat连接mysql是远程连接吗(详解Navicat远程连接mysql很慢)
- mvc中@helper的用法
- 宝塔mysql怎么设置优化(宝塔面板mysql内存占用高如何优化)
- mysql 分片键规则(MySql8 WITH RECURSIVE递归查询父子集的方法)
- Serif和Sans-serif的区别
- docker 搭建gitlab(使用Docker搭建私有GitLab的两种方案)
- vue左侧边栏的制作(Vue+Vant实现顶部搜索栏)
- css 中border基本语法(详解CSS的border边框属性及其在CSS3中的新特性)
- 前端用图片隐藏请求接口(前端实现打印图像功能)
- css高级使用技巧(全面解析CSS Media媒体查询使用操作推荐)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9