SQL中的左连接与右连接,内连接有什么不同
SQL中的左连接与右连接,内连接有什么不同
我们来举个例子。天庭上面有一个管理系统:管理系统有个主表:主表记录着各个神仙的基本信息(我们把它当成表A)。还有个表记录着他们这个神仙的详细信息(我们把它当成表B)。
表A的信息为
| idA | name | position |
|---|---|---|
| 1 | 李靖 | 托塔天王 |
| 2 | 值年神李丙 | 四值功曹 |
| 3 | 增长天王 | 四大天王 |
| 4 | 青龙孟章神君 | 四方神 |
表B的信息为(此神仙有无犯过天条)
| IDB | Name | THINGS |
|---|---|---|
| 1 | NO | |
| 3 | YES | 上班玩忽职守 |
| 4 | NO | |
| 5 | NO | |
| 6 | YES | 调戏嫦娥妹妹 |
刚好赶上天庭蟠桃会,王母就让你统计下,参加蟠桃会的人有无犯事的记录,有的话就取消他参加宴会的资格。
这个时候,你用上了 左连接 方法
语句为下:select A.* ,B.* from A left outer join B on (A.IDA=B.IDB)
| IDA | NAME | position | IDB | Name | THINGS |
|---|---|---|---|---|---|
| 1 | 李靖 | 托塔天王 | 1 | NO | |
| 2 | 值年神李丙 | 四值功曹 | NULL | NULL | NULL |
| 3 | 增长天王 | 四大天王 | 3 | YES | 上班玩忽职守 |
| 4 | 青龙孟章神君 | 四方神 | 4 | NO |
结果就如同这样,表B中的IDB=5和6这条数据没有展示出来。且IDA=2 这条数据在表B中取null,左连接取的就是FROM后面该表中的所有数据作为查询结果。
但是如果你用了右连接:
语句为下:select A.* ,B.* from A right outer join B on (A.IDA=B.IDB)
| IDA | NAME | position | IDB | Name | THINGS |
|---|---|---|---|---|---|
| 1 | 李靖 | 托塔天王 | 1 | NO | |
| 3 | 增长天王 | 四大天王 | 3 | YES | 上班玩忽职守 |
| 4 | 青龙孟章神君 | 四方神 | 4 | NO | |
| NULL | NULL | NULL | 5 | NO | |
| NULL | NULL | NULL | 6 | YES | 调戏嫦娥妹妹 |
这个时候王母一看。什么,居然有人调戏 嫦娥,而且还查不到这个人?王母就会大发雷霆然后限你一天之内找到这个人。
内连接和自然连接的写法一样
select * from A,B where A.IDA=B.IDB
| IDA | NAME | position | IDB | Name | THINGS |
|---|---|---|---|---|---|
| 1 | 李靖 | 托塔天王 | 1 | NO | |
| 3 | 增长天王 | 四大天王 | 3 | YES | 上班玩忽职守 |
| 4 | 青龙孟章神君 | 四方神 | 4 | NO |
整体来概述一下,这些的区别是什么:
通俗易懂
左连接:左边有的,右边没有的为null
右连接:左边没有的,右边有的为null
内连接:显示左边右边共有的
SQL中的左连接与右连接,内连接有什么不同的更多相关文章
- PHP左、右、内连接
left join :左连接,返回左表中所有的记录以及右表中连接字段相等的记录.right join :右连接,返回右表中所有的记录以及左表中连接字段相等的记录.inner join: 内连接,又 ...
- SQLServer学习笔记<> 表连接查询----交叉连接、内连接、左连接、右连接
(1)交叉连接(cross join)即我们所说的笛卡尔积.查询出满足两张表所有的记录数,A(3条记录),B(9条记录),A*B(27条记录). 比如:雇员表(HR.employees)和货运公司(S ...
- Linq中的左连,右连,内连
1.左连接: var LeftJoin = from emp in ListOfEmployeesjoin dept in ListOfDepartmenton emp.DeptID equals d ...
- C++中的左值与右值(二)
以前以为自己把左值和右值已经弄清楚了,果然发现自己还是太年轻了,下面的这些东西是自己通过在网上拾人牙慧,加上自己的理解写的. 1. 2. 怎么区分左值和右值:知乎大神@顾露的回答. 3. 我们不能直接 ...
- 【SQL Server】左联接,右联接,内联接的比较
首先需要解释一下这几个联接的意思: left join(左联接): 返回包括左表中的所有记录和右表中联结字段相等的记录. right join(右联接): 返回包括右表中的所有记录和左表中联结字段相等 ...
- C++中的左值和右值
左值和右值的定义 在C++中,能够放到赋值操作符=左边的是左值,能够放到赋值操作符右边的是右值.有些变量既能够当左值又能够当右值.进一步来讲,左值为Lvalue,事实上L代表Location,表示在内 ...
- c++中的左值与右值
左值(lvalue)和右值(rvalue)是 c/c++ 中一个比较晦涩基础的概念,不少写了很久c/c++的人甚至没有听过这个名字,但这个概念到了 c++11 后却变得十分重要,它们是理解 move/ ...
- c++中的左值和右值的理解
1.左值和右值的概念 C++中左值(lvalue)和右值(rvalue)是比较基础的概念,虽然平常几乎用不到,但C++11之后变得十分重要,它是理解 move/forward 等新语义的基础. 左值与 ...
- SQL中的左连接与右连接有什么区别,点解返回值会不同?(转)
例子,相信你一看就明白,不需要多说 A表(a1,b1,c1) B表(a2,b2) a1 b1 c1 a2 b2 01 数学 95 01 张三 02 语文 90 02 李四 03 英语 80 04 王五 ...
随机推荐
- 使用Devstack部署neutron网络节点
本文为minxihou的翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou JmilkFan:minxihou的技术博文方向是 算法&Open ...
- 漏洞验证系列--MongoDB未授权访问
本系列文章旨在对于有一定网络安全基础的人员,在日常工作中扫描出来的各种漏洞,如何进行验证,以区分该漏洞是否存在或是扫描器误报.请勿应用非法途径. 本漏洞是由于MongoDB未设置访问权限,用户可以直接 ...
- 剑指offer——20删除链表中重复的结点
题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3->3->4->4->5 处理后 ...
- Scala 学习2
去map里面的数据 scala> val map = Map("a"->1, "b"->2, "c"->3) map ...
- Spring Cloud Feign设计原理
什么是Feign? Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直 ...
- Tomcat调优详解
前言 在这里告诫一下那些感觉自己啥都会的朋友们,其实你会的可能只是皮毛,不要感觉这个东西以前已经做过了,就不想去做了 其实你还远没有达到精通的地步,遇到以前做过的东西,也要用心的再去做一遍,你可能会从 ...
- HTTP协议:响应消息
一.请求消息:客户端发送给服务器端的数据 数据格式: 1.请求行 2.请求头 3.请求空行 4.请求体 二.响应消息:服务器端发送给客户的数据 数据格式: 1.响应行: 1.组成:协议/版本 响应状态 ...
- SPRING+JPA+Hibernate配置方法
1.applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <beans ...
- bias、variance与拟合之间的关系
Error = Bias^2 + Variance+Noise 误差的原因: 1.Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,即算法本身的拟合能力. 2.Variance ...
- DEV的GridControl控件的选中列属性设置高光
设置Run Designer=>Views=> OptionsSelection下面的: EnableAppearanceFocusedCell = False,//鼠标移开,失去焦点,仍 ...