mysql多表join方式
四种join的区别已老生常谈:
INNER JOIN(也可简写为JOIN): 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
那么问题来了,还有一种常见的写法是将表用逗号隔开,那这个又是怎么连接的呢。
先看这两张表。
使用逗号隔开的方法来连接表:
SELECT *FROM employee,departmentWHERE employee.DepartmentID = department.DepartmentID
输出结果:
可以很明显发现:这不就是inner join嘛!
没错,答案正是这样:sql用逗号连接多张表对应的是 inner join。
为了严谨性,我到处找sql的官方文档来证实这一点。然而搜不出来sql的文档(谁知道网址请务必发我),最后还是在维基百科上找到了可以当作论据的话。
SQL 定义了两种不同语法方式去表示"连接"。
1.首先是"显式连接符号",它显式地使用关键字 JOIN,
2.其次是"隐式连接符号",它使用所谓的"隐式连接符号"。隐式连接符号把需要连接的表放到 SELECT 语句的 FROM 部分,并用逗号隔开。这样就构成了一个"交叉连接",WHERE 语句可能放置一些过滤谓词(过滤条件)。
3.那些过滤谓词在功能上等价于显式连接符号. SQL 89标准只支持内部连接与交叉连接,
4.因此只有隐式连接这种表达方式;SQL 92标准增加了对外部连接的支持,这才有了JOIN表达式。
也就是说,
SELECT *FROM employeeINNER JOIN departmentON employee.DepartmentID = department.DepartmentID
等价于:
SELECT *FROM employee,departmentWHERE employee.DepartmentID = department.DepartmentID
至于哪个效率高一点,其实两者是一回事,没有区别。只是内连接是由SQL 1999规则定的书写方式而已。
另外,在写sql语句测试4种join的时候,发现mysql对于full join返回的结果和inner join一模一样。经查阅资料,才发现原来mysql不支持full join啊。
参考:
https://blog.csdn.net/weixin_39687359/article/details/111721631
mysql多表join方式相关推荐
- Mysql两表 join 查询方式
一.SQL基本语法格式 SELECT DISTINCT< select_list > FROM< left_table > < join_type > JOIN & ...
- Flink进行Kafka事实表与Mysql维度表Join(纯DDL/DML方式)
概述: 對參考鏈接[1]進行DDL上的復現. 一些基本的業務常识 來源載體 數據特點 維表 Mysql/Csv/Hbase 很少變化 事實表 Kafka 不停變化 开发环境与准备工作 组件 版本 ...
- MySQL小表join大表的正确使用姿势(straight_join 关键字的使用)
网上有种说法是:由于一般是采用小表join大表的方式(可以提高效率),所以有人说将小表放在左边,让它先执行,记住,这种说法是错误的!!!有例为证: 我们看上例: film inner join fil ...
- 数据库实践丨MySQL多表join分析
Join并行 Join并行 1. 多表join介绍 2. 多表Join的方式 不使用Join buffer 使用Join buffer 3. Join执行流程(老执行器) 1. 多表join介绍 JO ...
- 阿里不让 MySQL 多表 Join ?我偏要!
一. 问题提出:<阿里巴巴JAVA开发手册>里面写超过三张表禁止join,这是为什么? 二.问题分析:对这个结论,你是否有怀疑呢?也不知道是哪位先哲说的不要人云亦云,今天我设计sql,来验 ...
- mysql多表查询方式_MySQL多表查询方式问题
你的 SQL 没有用到任何索引,对 a b 两个表都是全表扫描,在数据量小的时候是没有问题的,但是如果数据量超过 100 万,性能问题就会突显出来. 这里不清楚你的 created_at 字段是什么类 ...
- mysql大表join小表速度很慢_mysql多表join中,为什么子查询会那么慢,怎么解决-问答-阿里云开发者社区-阿里云...
下面的sql执行后cpu100%,但是这三张join的表数据量都在2W左右,不应该啊,是不是数据库服务器配置出了问题啊.sql如下:select a.excel_id, a.rpt_id, a.acc ...
- mysql 备份表_MySQL中表的复制以及大型数据表的备份教程
表复制mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助. 假如我们有以下这样一个表: id username passwo ...
- mysql join 组合索引_详解MySQL两表关联的连接表创建单列索引还是组合索引最优...
概述 今天主要介绍一下MySQL中两表关联的连接表是如何创建索引的相关内容,下面来看看详细的介绍. MySQL两表关联的连接表创建索引 创建数据库的索引,可以选择单列索引,也可以选择创建组合索引. 假 ...
- mysql not exists优化_MySQL优化--NOT EXISTS和LEFT JOIN方式差异
在MySQL中,我们可以将NOT EXISTS语句转换为LEFT JOIN语句来进行优化,哪为什么会有性能提升呢? 使用NOT EXISTS方式SQL为: SELECT count(1)FROMt_m ...
最新文章
- ajax与easyui树节点,EasyUI中的tree用法介绍
- Ubuntu下安装arm-linux-gnueabi-xxx编译器
- Eclipse中Maven的安装
- 拼多多技术事故复盘,程序员应该学到什么?
- varnish基本配置(二)
- Spoken English(015)
- 如何识别新加的计算机硬盘,图文解说win10系统无法识别新加的机械硬盘的具体技巧...
- UILabel教程 touch 事件
- 无迹卡尔曼滤波(UKF)
- 查找在Git中删除文件的时间
- Citrix XenServer
- 计算机软件登记文档,计算机软件著作权登记申请表范本
- keil+c语言优化,KEIL编译器【C语言编译选项优化等级说明】
- 昂达平板装linux系统下载,昂达平板用U盘启动方式安装Ubuntu Uudgie 16.10 Linux操作系统...
- python + 夜神模拟器 + appium 小红书app数据抓取
- 2019世界机器人大会
- electron builder 打包错误相关问题
- 续航超1000km,极氪成为宁德时代麒麟电池全球量产首发品牌 | 美通社头条
- matlab-结构体struct
- 俄语语言文学类毕业论文文献包含哪些?
热门文章
- 计算机出现函数不正确的是,小编教你快速修复无法访问函数不正确的方法
- 面包板电源线怎么接_面包板的怎么使用
- Unity Container 应用示例
- 【Python实现视频转文字操作】
- Maven错误:was cached in the local repository, resolution will not be reattempted until the update
- python输入若干个数字求和
- 2020年ESA中国区10m地表覆盖数据的镶嵌、裁剪与分省数据分享
- 达梦数据库技术分享索引贴
- 链接脚本(Linker Script)用法解析(二) clear_table copy_table
- RabbitMQ与spring的集成,,基础。