当前位置: 首页 > news >正文

SQL中大概有这么几种JOIN

 SQL中大概有这么几种JOIN:

cross join

inner join

left outer join  

right outer join 

full outer join

 

首先都是基于cross join(笛卡尔乘积),然后是inner join,在笛卡尔乘积的结果集中去掉不符合连接条件的行。

left outer join 是在inner join的结果集上加上左表中没被选上的行,行的右表部分每个字段都用NUll填充。

right outer join 是在inner join的结果集上加上右表中没被选上的行,行的左表部分全用NULL填充。

 

SQL 之JOIN 用法完全版

一、各种JOIN的含义

SQL中大概有这么几种JOIN:

cross join

inner join

left outer join  

right outer join 

full outer join

 

首先都是基于cross join(笛卡尔乘积),然后是inner join,在笛卡尔乘积的结果集中去掉不符合连接条件的行。

left outer join 是在inner join的结果集上加上左表中没被选上的行,行的右表部分每个字段都用NUll填充。

right outer join 是在inner join的结果集上加上右表中没被选上的行,行的左表部分全用NULL填充。

outer的意思就是"没有关联上的行"。

 

二、旧式写法和标准写法:

 

1、INNER Join code as the following:

 

Select * from A a, B b where a.categoryID = b.categoryID;

Equals:

Select * from A a inner join B b on a.categoryID = b.categoryID;

 

2、OUTER Join code as the following

 

select * from A a full(left/right) outer  join B b  on a on a.categoryID = b.categoryID;

Equals::

Select * from A a, B b where a.categoryID *=  b.categoryID;

Select * from A a, B b where a.categoryID =*  b.categoryID;

 

三、例子

Table A have 12( 8+4) entries, 8 entries have valid relation with B

Table B have 80(77+3) entries , 77 entries have valid relation with A.

 

then the return amount of join is :

cross join : 12*80

inner join : 77

full outer join : 77+4+3

left outer join: 77 + 4

right outrer join: 77 + 3

转载于:https://www.cnblogs.com/moonwind/p/4569193.html

相关文章:

  • javascript系列--浅析Promise内部结构
  • socket计划——一个简单的例子
  • java同学毕业后学习之路建议
  • 【必备】史上最全的浏览器 CSS JS Hack 手册(转)
  • ElementUI Tree树形控件renderContent return时报错
  • iOS Widget简单使用
  • FaceBook页面加载技术
  • 缴款日后流动性仍紧 央票利率再现“倒挂”
  • HIDKomponente使用读写Hid设备(转)
  • setPreferredSize和setSize的区别及用法
  • 人们为何喜欢在社交网络发布个人状态?
  • iOS常用动画
  • 信息增益的特征选择方法
  • 关于自定义强类型实体类的一点困惑
  • 记录学习MVC过程,MVC验证(四)
  • [LeetCode] Wiggle Sort
  • 【css3】浏览器内核及其兼容性
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CSS中外联样式表代表的含义
  • ES6之路之模块详解
  • fetch 从初识到应用
  • GitUp, 你不可错过的秀外慧中的git工具
  • idea + plantuml 画流程图
  • input的行数自动增减
  • Java精华积累:初学者都应该搞懂的问题
  • Java面向对象及其三大特征
  • leetcode98. Validate Binary Search Tree
  • PV统计优化设计
  • SpiderData 2019年2月13日 DApp数据排行榜
  • tweak 支持第三方库
  • WebSocket使用
  • - 概述 - 《设计模式(极简c++版)》
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 思考 CSS 架构
  • 算法---两个栈实现一个队列
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 正则表达式-基础知识Review
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​虚拟化系列介绍(十)
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ###C语言程序设计-----C语言学习(3)#
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (转载)Linux网络编程入门
  • .Net 代码性能 - (1)
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .Net 知识杂记
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET和.COM和.CN域名区别
  • .NET简谈设计模式之(单件模式)
  • .NET设计模式(2):单件模式(Singleton Pattern)