文档章节

Mysql join详解

o
 osc_1ee7cxmx
发布于 2018/08/06 20:32
字数 356
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

一个完整的SQL语句中会被拆分成多个子句,子句的执行过程中会产生虚拟表(vt),但是结果只返回最后一张虚拟表。

JOIN的执行顺序

以下是JOIN查询的通用结构:

SELECT <row_list>
FROM <left_table>
<inner|left|right> JOIN <right_table>
ON <join condition> 
WHERE <where_condition>

它的执行顺序如下(SQL语句里第一个被执行的总是FROM子句)

  • FROM:对左右两张表执行笛卡尔积,产生第一张表vt1。行数为n*m(n为左表的行数,m为右表的行数)

  • ON:根据ON的条件逐行筛选vt1,将结果插入vt2中

  • JOIN:添加外部行。

    • 如果指定了LEFT JOIN(LEFT OUTER JOIN),则先遍历一遍左表的每一行,其中不在vt2的行会被插入到vt2,该行的剩余字段将被填充为NULL,形成vt3;

    • 如果指定了RIGHT JOIN也是同理。

    • 如果指定的是INNER JOIN,则不会添加外部行,上述插入过程被忽略,vt2=vt3(因此INNER JOIN的过滤条件放在ONWHERE里执行结果是没有区别的)

  • WHERE:对vt3进行条件过滤,满足条件的行被输出到vt4

  • SELECT:取出vt4的指定字段到vt5

PS:其实我们从语义上就能看出LEFT JOINRIGHT JOIN没什么差别,两者的结果差异取决于左右表的放置顺序

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

jQuery获取select onChange的值 - jQuery get value of select onChange

问题: I was under the impression that I could get the value of a select input by doing this $(this).val(); 我的印象是我可以通过执行$(this).val();来获取选择输入的值$(this).val()......

javail
今天
13
0
道翰天琼解密宇宙信息大脑三者最核心奥秘,破解认知智能基础理论(群聊形式)

三体论是探索研究宇宙,信息和人类大脑三者关系的理论体系。是认知智能的奠基理论体系之一。宇宙和信息,信息和人类大脑,人类大脑和宇宙,三者之间存在着某种未被完全揭示的奥秘。三体论的核...

jackli2020
今天
15
0
OSChina 周日乱弹 —— 这些照片能留存下来要感谢蛇不吃相机

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《28》- ゴンチチ 手机党少年们想听歌,请使劲儿戳(这里) @FalconChen :真得学...

小小编辑
今天
78
0
如何在视频中的对象后面添加图像

作者|PRATEEK JOSHI 编译|VK 来源|Analytics Vidhya 概述 在运动物体后面添加图像是一个典型的计算机视觉项目 了解如何使用传统的计算机视觉技术在视频中添加logo 介绍 我的一位同事向我提出...

人工智能遇见磐创
今天
14
0
UKUI Desktop Environment

install $ sudo add-apt-repository ppa:ubuntukylin-members/ukui3.0$ sudo apt upgrade or $ sudo apt-get install curl$ curl -sL 'https://keyserver.ubuntu.com/pks/lookup?&op=get&......

qwfys
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部