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 王五 ...
随机推荐
- Python ORM封装
import sys import asyncio import logging logging.basicConfig(level=logging.INFO) # 一次使用异步 处处使用异步 imp ...
- Delphi中任务栏状态区的编程
在Windows桌面的任务栏上有一个凹陷的区域,其中显示着系统时钟以及一些图标,这个长方形的区域便是Windows的任务栏状态区(taskbar status area).本文将介绍使用Borland ...
- Delphi 2010下使用sqlitesimpledelphi连接SQLite数据库及中文乱码问题的解决
应女朋友的要求,要写一款销售管理的软件.用于管理服装店每天的销售记录,已及管理服装店的客户,并对客户进行生日提醒 因为之前使用C#写过一款家庭管理软件,主要是自己用,所以使用了服务器型数据库MySQL ...
- CF16E Fish(状压+期望dp)
[传送门[(https://www.luogu.org/problemnew/show/CF16E) 解题思路 比较简单的状压+期望.设\(f[S]\)表示\(S\)这个状态的期望,转移时挑两条活着的 ...
- NX二次开发-UFUN特征选择对话框UF_UI_select_feature
#include <uf.h> #include <uf_ui.h> UF_initialize(); //特征选择对话框 char sMessage[] = "特征 ...
- maven配置私服中可能遇到的问题
文章目录 之前要写一个hsf的demo,maven的依赖是需要alibaba的私服的,所以出现了下面的错误. 具体参看另一篇文章:https://blog.csdn.net/dataiyangu/ar ...
- HDU1285-确定比赛名次-拓扑排序板子题
有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委员会不能直接获得每个队的比赛成绩,只知道 ...
- 简单的spring--mvc整合
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- axios全局拦截响应
在系统开发过程中,若遇到长时间未操作,则需要将页面跳转到登录页面.因为现在都是前后端分离的开发模式,路由跳转都交给前端,而后端只返回一个报错信息,例如"errorMsg":&quo ...
- sort()和优先队列的总结
一.关于sort函数 sort()排序函数默认是从小到大, a={5,3,2,1,6 }; sort(a,a+n); //输出是1 2 3 5 6 这里如果要从到小排序,则有两种方式可以满足 (1) ...