【转】mysql多表关联查询
转载地址:https://www.cnblogs.com/yiyide266/p/7594058.html
示例表A:
author_id | author_name |
1 | Kimmy |
2 | Abel |
3 | Bill |
4 | Berton |
示例表B:
book_id | author_id | start_date | end_date |
9 | 1 | 2017-09-25 21:16:04 | 2017-09-25 21:16:06 |
10 | 3 | ||
11 | 2 | 2017-09-25 21:21:46 | 2017-09-25 21:21:47 |
12 | 1 | ||
13 | 8 |
示例表C:
order_id | book_id | price | order_date |
1 | 9 | 0.2 | 2017-09-24 21:21:46 |
2 | 9 | 0.6 | 2017-09-25 21:16:04 |
3 | 11 | 0.1 | 2017-09-25 21:21:46 |
在以上表中执行AB表关联
1 2 |
|
结果
author_id | author_name | book_id |
1 | Kimmy | 9 |
3 | Bill | 10 |
2 | Abel | 11 |
1 | Kimmy | 12 |
4 | Berton |
结果出现了2条author_id为1的记录,因为右表中存在了两条关联author_id=1的行
右边出现N条关联左边的记录,结果就会相应出现N条关联了右表出现的记录
在以上表中执行ABC表关联
1 2 3 |
|
结果
author_id | author_name | book_id | order_id | order_price |
1 | Kimmy | 9 | 1 | 0.2 |
1 | Kimmy | 9 | 2 | 0.6 |
2 | Abel | 11 | 3 | 0.1 |
3 | Bill | 10 | ||
1 | Kimmy | 12 | ||
4 | Berton |
结果出现了3条author_id=1的记录,因为authors第一次关联了books表book_id为9和12的book关联了author_id为1的作者,而book_id为9的书本则关联了两个orders记录,所以结果集包含3条author_id为1的记录
可以运用
1 |
|
等函数通过
1 |
|
来统计结果
1 2 3 4 |
|
结果集会基于book_id来统计每一本书的订单总额
author_id | author_name | book_id | sum(order_price) |
4 | Berton | ||
1 | Kimmy | 9 | 0.80 |
3 | Bill | 10 | |
2 | Abel | 11 | 0.10 |
1 | Kimmy | 12 |
book_id为9的订单总额为0.80,并且9的记录从多条合并为1条。
多条件join
1 2 3 4 |
|
选取在一定时间区间范围内的order订单,可以看到订单order_id为1的订单不再纳入book_id为9的统计当中,因为它的时间区间不符合join条件
author_id | author_name | book_id | order_id | sum(`order`.price) |
4 | Berton | |||
1 | Kimmy | 9 | 2 | 0.60 |
3 | Bill | 10 | ||
2 | Abel | 11 | 3 | 0.10 |
1 | Kimmy | 12 |
关于where的使用,看下面示范
1 2 3 4 5 |
|
以上语句假设选取price不为空的记录,导致了一个错误的出现
1 |
|
因为where不能用于选取列的AS别名判断,MYSQL的处理机制是先进行选取,再进行筛选,在选取阶段就启用了where条件,因为这时并不存在prices的筛选结果后才产生的字段,所以这里会抛出错误
我们可以这样做
1 2 3 4 5 |
|
选取阶段order表是存在price字段的,所以只有price不为空的记录才会被选取
author_id | author_name | book_id | order_id | prices |
2 | Abel | 11 | 3 | 0.10 |
1 | Kimmy | 9 | 2 | 0.60 |
运用
1 |
|
对那些无法进行 WHERE 的AS别名的字段进行一些筛选查询
1 2 3 4 5 |
|
这时只有sum为0.8的结果被选中
author_id | author_name | book_id | sum(order_price) |
1 | Kimmy | 9 | 0.80 |
对于组合其他语法查询,也是没问题的
1 2 3 4 5 6 7 |
|
【转】mysql多表关联查询相关推荐
- MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?
这里写目录标题 MySQL多表关联查询对比多次单表查询,哪个效率高? 疑问: 高手解答: <阿里巴巴JAVA开发手册>里面写超过三张表禁止join 这是为什么?这样的话那sql要怎么写? ...
- Mysql多表关联查询
三表(replay_case.replay_task及general_flow)联合查询,注意select时,如果某个字段在不同的表中有重复的话需要指定具体的表,比如应该使用:select ...
- 2022/1/22 北京 mysql 多表关联查询,等值连接、非等值连接,外连接,内连接、自连接
一.笛卡尔积错误 要查询的俩个字段分别在俩张表 employee_id,department_name.所以要多表关联查询 select * from employees; -- 能查询出107条记录 ...
- MYSQL多表关联查询与子查询
多表关联查询 关联查询又名连接查询,其主要包括了内连接,外连接,自连接,交叉连接等四个大类. 首先我们要清楚我们为什么要使用多表关联查询,肯定是因为我们想要显示的数据来自于两个或多个数据表内部,我们想 ...
- MySQL多表关联查询与存储过程
-- **************关联查询(多表查询)**************** -- 需求:查询员工及其所在部门(显示员工姓名,部门名称) -- 1.1 交叉连接查询(不推荐.产生笛卡尔乘积 ...
- mysql 子表 关联查询语句_MySQL-基本查询语句及方法,连表和子查询
一.基本查询语句 create table emp( id intnotnull unique auto_increment, name varchar(20) notnull, sex enum(' ...
- mysql多数据表关联查询慢问题解决方案
问题一:遇到一个问题,mysql库下表A有几万条数据:表B也有几万条数据,结果两表关联的时候,查询超级慢,30s内没反应. 问题一解决方案: 1. 加索引,但索引不要乱加,两表关联,必须要创建的索引是 ...
- mysql 子表 关联查询语句_MySQL基本SQL语句之单表查询、多表查询和子查询
一.简单查询: 基本语法:SELECT * FROM tb_name;查询全部 SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * FR ...
- mysql 子表 关联查询语句_mysql查询语句 和 多表关联查询 以及 子查询
1.查询一张表: select * from 表名: 2.查询指定字段:select 字段1,字段2,字段3-.from 表名: 3.where条件查询:select 字段1,字段2,字段3 from ...
- 面试官:为什么mysql不建议执行超过3表以上的多表关联查询?
概述 前段时间在跟其他公司DBA交流时谈到了mysql跟PG之间在多表关联查询上的一些区别,相比之下mysql只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort ...
最新文章
- Android应用签名详解 Eclipse+ADT
- 多线程基础-基本概念(一)
- UVALive 6044(双连通分量的应用)
- [破解] DRM-内容数据版权加密保护技术学习(中):License预发放实现
- 工作心得_在做算法工程师的道路上,你掌握了什么概念或技术使你感觉自我提升突飞猛进?
- 1028: [JSOI2007]麻将 - BZOJ
- 计算机网络毕业论文格式模板范文,计算机毕业论文格式模板范文(计算机毕业论文选题)...
- 时间序列的平稳性检验方法
- 什么是智能建筑,智能建筑系统主要有哪几部分组成?
- 氧化三甲胺及相关代谢物检测
- vs2019个性化配置
- 2022年第十二届APMCM亚太地区数学建模竞赛1月加赛E题翻译以及思路
- PDF怎么转图片?快把这些方法收好
- maf相关代码和命令
- 计算机二级教程书pdf MS,全国计算机等级考试二级教程MS Office高级应用教学大纲4.pdf...
- 2021最新微信域名链接检测工具 微信域名拦截检测接口
- 刚刚,中兴通讯董事长殷一民道歉!
- 做金融直播,这几个问题一定要知道
- php定义json类型数据,PHP中使用json数据格式定义字面量对象的方法_PHP
- BasicRF之中断接收basicRfRxFrmDoneIsr
热门文章
- ai决策_基于经验的决策与基于事实的决策:AI / ML如何改变工程师的工作方式
- Ubuntu设置截图的快捷键
- 配置好网络文件还是连不上外网
- matlab滤除100hz,关于滤波器滤波的问题,要求滤除3000Hz以上,但滤除后只剩下1000Hz以内的...
- python:whl包离线下载,pip离线安装whl文件
- struts mysql_Struts2连接MySQL数据库(Struts2 MySQL)
- 16/32/64位平台下char、short、int、long、指针等类型分别占多少字节,操作系统可以使用的最大内存空间为多大?
- awk的关联数组版本支持
- 安装libgl1-mesa-dri:i386重启后黑屏问题解决
- iOS的UILabel设置居上对齐,居中对齐,居下对齐