MySQL STRAIGHT_JOIN

STRAIGHT_JOIN 是 MySQL 对标准 SQL 的扩展,用于在多表查询时指定表载入的顺序。在 JOIN 表连接中,同样可以指定表载入的顺序,本文只讲述 STRAIGHT_JOIN 在表连接 JOIN 中的应用。

MySQL STRAIGHT_JOIN 语法如下:

1

...FROM table1 STRAIGHT_JOIN table2ON condition ...

STRAIGHT_JOIN 实际上与内连接 INNER JOIN 表现完全一致,不同的是使用了 STRAIGHT_JOIN 后,table1 会先于 table2 载入。

提示

MySQL 在执行 INNER JOIN 的时候,会根据自己内部的优化规则来决定先载入 table1 还是 table2,如果您确认 MySQL 载入表的顺序并不是最优化的时候,就可以使用 STRAIGHT_JOIN 以替代 INNER JOIN。

MySQL STRAIGHT_JOIN 例子

1

SELECT article.aid,article.title,user.usernameFROM article STRAIGHT_JOINuser ON article.uid=user.uid

注意:该 SQL 仅仅是 STRAIGHT_JOIN 使用示例,并不表示其合理性。

如果有更多表进行连接,那么使用 STRAIGHT_JOIN 后,其载入顺序就遵循从左往右的规则。最后,STRAIGHT_JOIN 无法应用于 LEFT JOIN 或 RIGHT JOIN。

MySQL NATURAL JOIN

NATURAL JOIN 也叫自然连接,实际是属于 JOIN 的一种。

MySQL NATURAL JOIN 语法如下:

1

...FROM table1 NATURALJOIN table2 ...

使用 NATURAL JOIN 时,MySQL 将表中具有相同名称的字段自动进行记录匹配,而这些同名字段类型可以不同。因此,NATURAL JOIN 不用指定匹配条件。

NATURAL JOIN 默认是同名字段完全匹配的 INNER JOIN,也可以使用 LEFT JOIN 或 RIGHT JOIN。一些例子如下:

1

SELECT article.aid,article.title,user.usernameFROM article NATURALJOINuser

2

//LEFT

3

SELECT article.aid,article.title,user.usernameFROM article NATURALLEFTJOIN user

4

//RIGHT

5

SELECT article.aid,article.title,user.usernameFROM article NATURALRIGHTJOIN user

mysql natural join_MySQL STRAIGHT_JOIN 与 NATURAL JOIN相关推荐

  1. mysql的natural join_MySQL基础之Natural Join用法

    Natural join即自然连接,natural join等同于inner join或inner using,其作用是将两个表中具有相同名称的列进行匹配 用https://www.w3resourc ...

  2. mysql as join_mysql as 别名与 join 多表连接语法

    在MySQL中,使用AS关键字为字段.表.视图取别名,或者不用as,用空格隔开: SELECT (SELECT id a,title b FROM blog c limit 1)d; 使用字段别名,可 ...

  3. mysql semi join_MySQL 5.6 Semi join优化之materialization strategy

    8月 24, 2014 | Nix.Huang 考虑如下查询: select * from Country where Country.code IN (select City.Country fro ...

  4. mysql多种join_MySQL的几种Join

    /* 左表t1*/ DROP TABLE IF EXISTS t1; CREATE TABLE t1 (id INT NOT NULL,NAME VARCHAR(20)); INSERT INTO t ...

  5. MySQL EXPLAIN详解,left join和in优化详解,以及optimizer_trace跟踪语句使用

    最近优化mybaits的sql语句性能,网上查了查mysql的explain用法,这里记录一下,希望对大家有帮助. EXPLAIN简述: explain为mysql提供语句的执行计划信息.可以应用在s ...

  6. mysql semi join_MySQL 通过semi join 优化子查询

    半连接是MySQL 5.6.5引入的,多在子查询exists中使用,对外部row source的每个键值,查找到内部row source匹配的第一个键值后就返回,如果找到就不用再查找内部row sou ...

  7. mysql 一对多 join_Mysql中FIND_IN_SET与JOIN在一对多关系查询时的优劣

    Mysql中的FIND_IN_SET函数在我知道它之前,我在做一个一对多的外键查询时,都会在中间设计一个关系表.比如一篇文章(post)对应多个标签(tag),我就会在中间设计一个关系表(post_t ...

  8. mysql hash join_MySQL的Hash Join能用吗?

    最近有两篇MySQL大咖级人物的文章引起了小伙伴们的关注,文章内容是关于MySQL的hash join功能.hash join看起来不够智能,于是我打算一探究竟,看看是否能发现些端倪,文末解释了大咖们 ...

  9. mysql left join_MySQL LEFT JOIN 语法用法与实例

    MySQL LEFT JOIN 语法 SQL(MySQL) LEFT JOIN 会取得左表(table1)全部记录,即使右表(table2)并无对应匹配记录.LEFT JOIN 基本语法如下: ... ...

最新文章

  1. 78. Spring Boot完美使用FastJson解析JSON数据【从零开始学Spring Boot】
  2. 公司承担的国家发改委高技术产业化示范工程
  3. FileMonitorKit 文件操作监控工具
  4. springamqp_SpringAMQP
  5. java工厂模式和抽象工厂_Java中的抽象工厂设计模式
  6. JavaFX及Java客户端技术的未来
  7. kotlin list转map
  8. ov5640帧率配置_OV5640(2):配置寄存器
  9. mas6a801 sw tree disp
  10. linux内核 初始化 wifi,Linux驱动(六)----Wifi基础
  11. 啤酒与尿布?挖掘商品之间的关联性分析(1):机器学习之Apriori算法
  12. 带宽、延时、吞吐率、PPS 这些都是啥?
  13. Web前端是什么?Web前端包括哪些技术?
  14. 群晖NAS加AD域时提示用户名或密码错误,但域管理员帐号和密码是对的,并且在电脑上可以正常加域。
  15. 中文分词多领域语料库
  16. 中视典编辑器 输出html5,虚拟现实软件|VRP-BUILDER 虚拟现实编辑器 - 【中视典数字科技】...
  17. FMDB - - 归纳整理- Vic_Li
  18. 绿幕虚拟直播,直播时代的风口
  19. Maven 虐我千百遍,我待 Maven 如初恋 侵删
  20. 萤石云视频EZOpenSDK集成(实现播放,视频放大功能)

热门文章

  1. 对比Mac OS上的PF与iptables
  2. 希玛 AR907C绝缘电阻测试仪基本实验
  3. 全栈性能测试教程之性能测试理论(一) mockserver应用
  4. This is My frist Webo Happy!!!
  5. 链栈的创建,入栈,出栈,获取栈顶元素
  6. SharePoint 2010 类似人人网站内信功能实施
  7. IBM MQ运维常用命令
  8. Java Future接口、Future模式理解
  9. block IO层框架分析2
  10. win7系统快捷键大集合 这个最有感觉了~~:~~ 【Win+Tab】:3D切换窗口