mysql注意:
本例测试数据表
CREATE TABLE `test_student` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键自增id',
`name` varchar(20) NOT NULL DEFAULT '' COMMENT '学生名字',
`subject` varchar(10) NOT NULL DEFAULT '' COMMENT '科目',
`score` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '成绩',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; INSERT INTO `cnblog`.`test_student` (`id`, `name`, `subject`, `score`) VALUES ('1', '张三', '语文', '80');
INSERT INTO `cnblog`.`test_student` (`id`, `name`, `subject`, `score`) VALUES ('2', '张三', '数学', '56');
INSERT INTO `cnblog`.`test_student` (`id`, `name`, `subject`, `score`) VALUES ('3', '张三', '英语', '38');
INSERT INTO `cnblog`.`test_student` (`id`, `name`, `subject`, `score`) VALUES ('4', '李四', '语文', '40');
INSERT INTO `cnblog`.`test_student` (`id`, `name`, `subject`, `score`) VALUES ('5', '李四', '数学', '65');
INSERT INTO `cnblog`.`test_student` (`id`, `name`, `subject`, `score`) VALUES ('6', '李四', '英语', '42');
INSERT INTO `cnblog`.`test_student` (`id`, `name`, `subject`, `score`) VALUES ('7', '王五', '语文', '61');
INSERT INTO `cnblog`.`test_student` (`id`, `name`, `subject`, `score`) VALUES ('8', '王五', '数学', '32');
INSERT INTO `cnblog`.`test_student` (`id`, `name`, `subject`, `score`) VALUES ('9', '王五', '英语', '90');
1. MySQL中不允许使用where 列别名作为查询条件,是因为MySql中列的别名本来是返回结果的时候才显示的,不在SQL解析时候使用。如果一定要用别名作为查询条件就用having
例:要查询语文成绩全部及格的学生有哪些?
如果这里使用别名 写成
SELECT name,subject,score as s FROM `test_student` where subject='语文' and s >60; 报错
正确写法 SELECT name,subject,score as s FROM `test_student` where subject='语文' having s >60;
2. 分组查询各科最大成绩时候,直接 max(score) + group by 求出的最大值未必对应相应的人,因为,group by默认已每组第一个值列出。
例:要查询各科成绩最高的同学名称、成绩
如果直接用 SELECT name,subject,max(score) as max FROM `test_student` group by `subject` 可以查出最高成绩,但最高成绩并没有对应相应的人,如下:
实际上数学成绩最高65 的为李四 ,英语成绩最高90 的是王五, 语文成绩最高80的是张三。
正确写法:SELECT * from `test_student` where score in(SELECT max(score) as max FROM `test_student` group by `subject`);
或者:SELECT t1.* from `test_student` as t1 join (SELECT max(score) as max FROM `test_student` group by `subject`) as t2 on t1.score=t2.max;
mysql注意:的更多相关文章
- Hadoop 中利用 mapreduce 读写 mysql 数据
Hadoop 中利用 mapreduce 读写 mysql 数据 有时候我们在项目中会遇到输入结果集很大,但是输出结果很小,比如一些 pv.uv 数据,然后为了实时查询的需求,或者一些 OLAP ...
- mysql每秒最多能插入多少条数据 ? 死磕性能压测
前段时间搞优化,最后瓶颈发现都在数据库单点上. 问DBA,给我的写入答案是在1W(机械硬盘)左右. 联想起前几天infoQ上一篇文章说他们最好的硬件写入速度在2W后也无法提高(SSD硬盘) 但这东西感 ...
- LINUX篇,设置MYSQL远程访问实用版
每次设置root和远程访问都容易出现问题, 总结了个通用方法, 关键在于实用 step1: # mysql -u root mysql mysql> Grant all privileges o ...
- nodejs进阶(6)—连接MySQL数据库
1. 建库连库 连接MySQL数据库需要安装支持 npm install mysql 我们需要提前安装按mysql sever端 建一个数据库mydb1 mysql> CREATE DATABA ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- 闰秒导致MySQL服务器的CPU sys过高
今天,有个哥们碰到一个问题,他有一个从库,只要是启动MySQL,CPU使用率就非常高,其中sys占比也比较高,具体可见下图. 注意:他的生产环境是物理机,单个CPU,4个Core. 于是,他抓取了CP ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- Entity Framework Core 实现MySQL 的TimeStamp/RowVersion 并发控制
将通用的序列号生成器库 从SQL Server迁移到Mysql 遇到的一个问题,就是TimeStamp/RowVersion并发控制类型在非Microsoft SQL Server数据库中的实现.SQ ...
- Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境
首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...
- 当忘记mysql数据库密码时如何进行修改
因为长时间没有使用数据库了,或者把密码改完之后就忘了数据库密码,不能正常进入数据库,也无法修改密码,有一个简单的常用修改密码方式: 1.首先找到和打开mysql.exe和mysqld.exe所在的文件 ...
随机推荐
- 剑指Offer(十九)——顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 ...
- 使用docker-compose部署nginx+gunicorn+mariadb的django应用
目录 1. docker-compose 项目的组织目录 2. 构建 mysql 容器 3. 构建 django-blog 容器 4. 构建 nginx 容器 5. docker-compose.ya ...
- Arduino学习笔记④ 经典按键实验
1.前言 我们讲了数字IO口介绍以及做了流水灯演示(主要用到IO口的输出功能),这节课我们讲解一下IO口的输入功能,说到输入功能,最经典的例子莫过于按键实验.废话少说,赶紧上车. 2.实验材料 ...
- 百万年薪python之路 -- 函数的动态参数
1.函数的动态参数 1.1 动态接收位置参数 在参数位置用*表示接受任意参数 def eat(*args): print('我想吃',args) eat('蒸羊羔','蒸熊掌','蒸鹿尾儿','烧花鸭 ...
- MD5收集整理
MD5如何生成的 百度百科 生成MD5 1.通过摘要生成MD5 MessageDigest md = MessageDigest.getInstance("MD5"); md.up ...
- Dotween 应用
dotween是做缓动比较简单实用的插件,下面就使用经验进行浅谈 1)通用方法:如下图官网截图所示,如果看不懂可以跳过,这是一个通用方法,前两个参数为委托类型,可以用lambda表达式,也可以直接写成 ...
- ArcGIS Engine添加地图元素的实现
在ArcGIS中,我们使用的制图控件除了MapControl之外,还有PageLayoutControl,用于页面布局和制图,生成一幅成品地图. PageLayoutControl 封装了PageLa ...
- 阿里规范不建议多表Join,可这SQL要怎么写?
阿里开发手册的描述,禁止多表join: 手册上写着[强制],相信很多同学项目里面的代码都不满足这个要求. 但是关键问题是:不用join,这SQL究竟要怎么写?! 分解关联查询 即对每个要关联的表进行单 ...
- 热门开源网关的性能对比:Goku > Kong > Tyk
不多说,先展示最后的性能测试结果 我们将Goku与市场上的其他同类热门产品进行比较,使用相同的环境和条件,测试以下产品:Goku.Kong.Tyk.简单介绍下, Goku API Gateway (中 ...
- Python项目生成所有依赖包的清单
最近写完的自动化脚本,分享给同事的时候发现依赖包很难解决(使用的不是virtualenv环境).想起来之前看开源接口平台项目的时候可以一键下载依赖包,于是就找到了第三方包pipreqs,可以自动帮助我 ...