MySQL 三种关联查询的方式: ON vs USING vs 传统风格
看看下面三个关联查询的 SQL 语句有何区别?
1SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id)
2SELECT * FROM film JOIN film_actor USING (film_id)
3SELECT * FROM film, film_actor WHERE film.film_id = film_actor.film_id
最大的不同更多是语法糖,但有一些有意思的东西值得关注。
为了方便区别,我们将前两种写法称作是 ANSI 风格,第三种称为 Theta 风格。
Theta 风格
在 FROM 短语中列出了关联的表名,而 WHERE 短语则指定如何关联。
这种写法被认为是古老的方式,有些时候比较难以理解,请看下面查询:
1SELECT * FROM film, film_actor WHERE film.film_id = film_actor.film_id AND actor_id = 17AND film.length > 120
上述查询列出片长超过 120 分钟的电影,其中包括演员编号是 17 的条件。别在意查询结果,查询本身如何呢?WHERE 表达式中包含三个条件,要看出哪个条件是关联,哪个条件是过滤还是稍费点事的。不过还是相对简单的,但如果是 5 个表,20 多个条件呢?
ANSI 风格: ON
使用 JOIN ... ON 可以将表关联的条件和记录过滤条件分开,将上面的语句重写后的结果如下:
1SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id) WHERE actor_id = 17 AND film.length > 120
看起来清晰许多。
注意: ON 语句中的括号不是必须的,我个人喜欢这样写而已。
MySQL 三种关联查询的方式: ON vs USING vs 传统风格相关推荐
- delete from删除几张表关联和mysql几种连接查询总结
delete from删除几张表关联和mysql几种连接查询总结 一.delete from删除几张表关联 ① 在多表连接时删除数据(错误删除示例): delete from sys_role_men ...
- MySQL中,关联查询的3种写法…
原文地址:MySQL中,关联查询的3种写法(USING/ON) 作者:王小安 看看下面三个关联查询的 SQL 语句有何区别? [sql] view plain copy SELECT * FROM ...
- MySQL多表关联查询效率高点还是多次单表查询效率高,为什么?
这里写目录标题 MySQL多表关联查询对比多次单表查询,哪个效率高? 疑问: 高手解答: <阿里巴巴JAVA开发手册>里面写超过三张表禁止join 这是为什么?这样的话那sql要怎么写? ...
- MySQL中的关联查询
MySQL中的关联查询 (1)Question:关联是什么 关联是SQL语言中使用SELECT操作表的一种操作机制,用来联系两个或者多个表.SELECT是SQL中的查询语句,用于查询数据库中的数据.将 ...
- c access mysql数据库_基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo)...
基于C#的Access MsSQL MySQL 三种数据库访问演示(含源文件Demo) 一.三种数据库的主要对比 数据库类型 特点 Microsoft Access 桌面数据库.数据库载体是单个文件 ...
- 浅淡Webservice、WSDL三种服务访问的方式(附案例)
Webservice Webservice是使应用程序以与平台和编程语言无关的方式进行相互通信技术. eg:站点提供访问的数据接口:新浪微博.淘宝. 官方解释:它是一种构建应用程序的普遍模型,可以在任 ...
- 关联查询mysql_《MySQL数据库》关联查询
原标题:<MySQL数据库>关联查询 一.关联查询 1.概念 在查询数据时,所需要的数据不只在一张表中,可能在两张或多张表中.这个时候,需要同时操作这些表来查询数据,即关联查询. 关联查询 ...
- powerdesigner 怎么关联两张表_【PL/SQL数据库】 三种关联机制 - 执行计划
看完这章你会学习到以下内容: 1. 三种关联分别是什么? 2. 什么时候那个适合用哪个?(总结) 一共有三种关联机制: Nest Loop 嵌套循环 (大小表) Sort Merge 排序合并 (添加 ...
- zynq学习03 zynq中三种实现GPIO的方式
http://m.blog.csdn.net/article/details?id=52123465 http://blog.chinaaet.com/songhuangong/p/43084 本文介 ...
最新文章
- python django -5 进阶
- Express调用mssql驱动公共类dbHelper
- Eclipse 一直Building Workspace 的解决办法
- 知识库使用VIEW视图实现内部用户、组关联关系和flowable内置表打通
- canvas笔记-画一个五角星(含算法)
- Memcache的分布式应用
- Asp.net ajax、Anthem.net、Ajax pro三大ajax框架那一种使用比较方便?易于配置?
- Web前端开发最佳实践(3):前端代码和资源的压缩与合并
- PCL中将回调函数封装到类中
- MySQL Binlog--事务日志和BINLOG落盘参数对磁盘IO的影响
- html切西瓜游戏源码,html5切水果源码(水果忍者)
- 教你在电脑中学会视频格式批量转换
- 计算机磁盘在线分区,电脑硬盘分区知多少 怎么分区才合理?
- 【生活中的逻辑谬误】对人不对事和两难陷阱
- cpp调用c头文件引用方法
- 基础知识系列博客——计算机组成原理
- java excel 批注_Java 添加、读取和删除 Excel 批注的操作代码
- Angular 的 ngOnInit 和 Constructor 的区别
- 笔记本处理器排名_【笔记本】AMD YES,霸占性能排行榜前四
- Python万年历(含农历、节气等)
热门文章
- Oracle EBS-SQL (BOM-19):主BOM与替代BOM互换.sql
- 思科修复NSA报告的Nexus 交换机DoS漏洞及其它
- CISA:攻击者正在利用开源Zabbix服务器中的多个漏洞!
- 最常被利用的三大 API 漏洞:是什么、为什么、如何阻止?
- 谷歌修复另一枚已遭利用的 Chrome 释放后使用0day,细节未公开
- GitHub 在热门 Node.js changelog 开源库Standard Version中发现 RCE 漏洞
- istio组件介绍和启动流程
- 动态传参, 名称空间, 嵌套, gloabal, nonlocal
- 通过Nethogs查看服务器网卡流量情况
- 【转】C++11 标准新特性: 右值引用与转移语义