mysql useing查询,MySQL数据库之多表查询using优化与案例
using
概念
using用来指定连接字段
using的结果也会对公共字段进行优化,优化的规则和自然连接是一样的
MariaDB [sel]> select * from grades inner join resume using(name);
+-------+---------+------+----+-----------+
| name | chinese | math | id | skill |
+-------+---------+------+----+-----------+
| Sunny | 93 | 96 | 1 | php |
| Jerry | 97 | 91 | 3 | php,mysql |
+-------+---------+------+----+-----------+
# `2 rows in set (0.001 sec)`
MySQL练习题
显示地区及每个地区参加笔试的人数,并按人数降序排列
思路分解
select 查询字段
from 多表查询 左外连接
using 指定连接字段
group by 分组查询结果
order by 降序排列
-- 第一步: 显示地区及每个地区参加笔试的人数
mysql> select stuaddress,count(writtenexam) from stuinfo left join stumarks using(stuno) group by stuaddress;
+------------+--------------------+
| stuaddress | count(writtenexam) |
+------------+--------------------+
| 上海 | 1 |
| 北京 | 2 |
| 天津 | 2 |
| 河北 | 0 |
| 河南 | 0 |
+------------+--------------------+
# `5 rows in set (0.00 sec)`
-- 第二步:将结果降序排列
mysql> select stuaddress,count(writtenexam) c from stuinfo left join stumarks using(stuno) group by stuaddress order by c desc;
+------------+---+
| stuaddress | c |
+------------+---+
| 北京 | 2 |
| 天津 | 2 |
| 上海 | 1 |
| 河北 | 0 |
| 河南 | 0 |
+------------+---+
# `5 rows in set (0.00 sec)`
显示有学生参加考试的地区
思路解析
select 选择查询字段
from 多表查询 左外连接
using 指定连接字段
group by 分组查询显示
having 条件筛选
-- having筛选
mysql> select stuaddress,count(writtenexam) c from stuinfo left join stumarks using(stuno) group by stuaddress having c>0;
+------------+---+
| stuaddress | c |
+------------+---+
| 上海 | 1 |
| 北京 | 2 |
| 天津 | 2 |
+------------+---+
# `3 rows in set (0.00 sec)`
思路解析
select 选择查询字段
from 多表查询 右外连接
using 指定连接字段
distinct 去重复
having 条件筛选
is not null 去空
-- 表连接实现
-- 第一步:右连接获取有成绩的地区
mysql> select stuaddress from stuinfo right join stumarks using(stuno);
+------------+
| stuaddress |
+------------+
| 北京 |
| 上海 |
| 天津 |
| 北京 |
| 天津 |
| NULL |
+------------+
# `6 rows in set (0.00 sec)`
-- 第二步:去重复
mysql> select distinct stuaddress from stuinfo right join stumarks using(stuno);
+------------+
| stuaddress |
+------------+
| 北京 |
| 上海 |
| 天津 |
| NULL |
+------------+
# `4 rows in set (0.00 sec)`
-- 去除null
mysql> select distinct stuaddress from stuinfo right join stumarks using(stuno) having stuaddress is not null;
+------------+
| stuaddress |
+------------+
| 北京 |
| 上海 |
| 天津 |
+------------+
# `3 rows in set (0.00 sec)`
显示男生和女生的人数
方法一:分组查询
select 查询字段
from 查询表
group by 分组查询显示
mysql> select stusex,count(*) from stuinfo group by stusex;
+--------+----------+
| stusex | count(*) |
+--------+----------+
| 女 | 3 |
| 男 | 4 |
+--------+----------+
# `2 rows in set (0.00 sec)`
方法二:union
select 查询字段
from 查询表
where 条件筛选
union 联合查询
mysql> select stusex,count(*) from stuinfo where stusex='男' union select stusex,count(*) from stuinfo where stusex='女';
+--------+----------+
| stusex | count(*) |
+--------+----------+
| 男 | 4 |
| 女 | 3 |
+--------+----------+
# `2 rows in set (0.00 sec)`
方法三:直接写条件
select 聚合函数查询
from 查询表
mysql> select sum(stusex='男') 男,sum(stusex='女') 女 from stuinfo;
+------+------+
| 男 | 女 |
+------+------+
| 4 | 3 |
+------+------+
# `1 row in set (0.00 sec)`
显示每个地区男生、女生、总人数
思路解析
select 选择字段 聚合函数
from 选择表
group by 分组查询显示
mysql> select stuaddress,count(*) 总人数,sum(stusex='男') 男,sum(stusex='女') 女 from stuinfo group by stuaddress;
+------------+--------+------+------+
| stuaddress | 总人数 | 男 | 女 |
+------------+--------+------+------+
| 上海 | 1 | 1 | 0 |
| 北京 | 2 | 1 | 1 |
| 天津 | 2 | 2 | 0 |
| 河北 | 1 | 0 | 1 |
| 河南 | 1 | 0 | 1 |
+------------+--------+------+------+
# `5 rows in set (0.00 sec)`
标签:stusex,mysql,查询,stuaddress,MySQL,using,之多表,select
来源: https://www.cnblogs.com/SharkJiao/p/14137851.html
mysql useing查询,MySQL数据库之多表查询using优化与案例相关推荐
- mysql 连表查询_mysql数据库之联表查询
表准备: 这次我们用到5张表: class表: student表: score表: course表: teacher表: 表结构模型: 我们针对以下需求分析联表查询: 1.查询所有的课程的名称以及对应 ...
- 数据库mysql自然连接_MySQL数据库之多表查询natural join自然连接
自然连接 概念 自动判断条件连接,判断的条件是依据同名字段 小结 表连接是通过同名字段来连接的 如果没有同名字段就返回笛卡尔积 同名的连接字段只显示一个,并且将该字段放在最前面 自然内连接(natur ...
- mysql optimize原理_MySQL数据库入门:表的Optimize 优化
一.optimize优化原理 对mysql进行大量增删改操作,磁盘上的空间没有被立即收回(数据空间.索引位),而是等待新的数据来填充空缺 -- 这些空间可以被后续的insert操作利用,但如果记录是变 ...
- mysql查询动态表名的数据类型_Mysql中查询某个数据库中所有表的字段信息
前言 有时候,需要在数据库中查询一些字段的具体信息,而这些字段又存在于不同的表中,那么我们如何来查询呢? 在每一个数据库链接的information_schema数据库中,存在这样一张表--COLUM ...
- mysql数据库实验3查询_MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录任务三 数据库的单表查询设计[实训目的与要求][实训原理][实训步骤]一.简单查询二.按条件查询1.比较大小查询2.带in关键字的查询(确定集合)3.带BETWE ...
- mysql关键字使用顺序_MySQL数据库之单表查询中关键字的执行顺序
MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...
- Mysql数据库的单表查询
我们在使用Mysql数据库存储数据时,对数据的查询方法是至关重要的,此博客主要介绍Mysql数据库的查询数据方法. 单表查询 单表查询就是我们仅对一个表进行查询,我们可以首先创建一个名为table的表 ...
- MySQL数据库应用 多表查询_mysql数据库-多表查询
今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MYSQL中的表关系分析并能正确建表 昨天内容回顾: 数据库的创建 : create ...
- MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...
- mysql数据库查询关键字级别_MySQL数据库之单表查询中关键字的执行顺序
MySQL数据库之单表查询中关键字的执行顺序 1 语法顺序 select distinct from where group by having order by limit 2 执行顺序 from ...
最新文章
- 深夜,我偷听到程序员要对session下手……
- 《转》Java Process应用之惑
- mysql 同步备份数据库
- Oracle实例和服务知识点
- 如何正确执行碎片整理或在群集共享卷(CSV)上使用CHKDSK命令
- pta 习题集 5-2 找出不是两个数组共有的元素 (5分)
- QString string int double char 相互转化
- TensorFlow 2.0和PyTorch谁更好?大牛们争了好几天
- python输出语句格式 f_Python基础之输出格式和If判断
- 【专题】CSDN下载频道4月热门资源top100汇总
- vivado2021.1安装
- 高数篇(三)-- 最小二乘法、正则化
- Git和Github的基本操作
- WIN10REALTEL高清音频管理器如何调音?调音无效怎么办?
- Qt应用程序嵌入浏览器的常用方法
- CloudFlare Workers 设置使用自定义域名
- 这样的牛皮凉席清水席要慎买!!!
- 网页上播放微信录音amr文件方案
- JDK、JRE、eclipse安装教程
- SAP BPC-通过Input Schedul输入与DM运行Logic计算两种情况下的LEQ/INC科目的正负号问题...
热门文章
- layui表格更改一列数据_layui数据表格隐藏列的方法介绍
- Winform控件拖动
- [jzoj NOIP2018模拟 11.01]
- javascript本地缓存方案-- 存储对象和设置过期时间
- 学习windows编程 day6 之模拟记事本
- python下各种包的安装
- 第四章 分治策略 4.1 最大子数组问题 (暴力求解算法)
- Photon——Setup and Config 设置与配置
- 【数据结构与算法】之深入解析“股票平滑下跌阶段的数目”的求解思路与算法示例
- App设计灵感之十二组精美的AR现实导航App设计案例