sql中的左外连查询的两种写法

昨天要在前台页面的表格中新增加一列,调用接口的时候发现没有这列数据,需要修改后台接口,后台接口添加一列,然后进行连表查询,将新增匹配的数据添加到结果表中,但是新列数据全为空,导致结果中之前表格的数据也出不来,添加外连接即可;

一. 什么是外连接?

  • 外连接(Outer Join);

  • outer join会返回每个满足第一个(顶端)输入与第二个(底端)输入的连接的行;

  • 同时它还会返回任何在第二个输入中没有匹配行的第一个输入中的行;

  • 上面这句话,并不好消化,写个栗子用用好理解;

1.2 外连接有哪几种?

外连接分为三种

  • 左外连接(简称左连);

    • 边的表不加限制,数据全部显示,匹配的表数据不全的,用null替代;
  • 右外连接(右连);

    • 边的表不加限制,数据全部显示,左边匹配的表数据不全的,用null替代;
  • 全外连接(全连);

    • 左右两边的表都不限制,即两边的表,数据全显示没有数据的用null替代;

左外连接右外连接时都会以一张表为基表,该表的内容会全部显示,然后加上两张表匹配的内容。 如果基表的数据在另一张表没有记录, 那么在相关联结果集行显示为空值(NULL);

1.3 使用SQL语法表示:

//  左  /   右   / 全    外连接
  LEFT / RIGHT / FULL  (OUTER)  JOIN

注意:

  • 通常我们省略outer 这个关键字。 写成:left / right / full join;
  • SQL语法不区分大小写,对大小写不敏感

二. 详细说一下左外连接

left join是以左表的记录为基础的,它的结果集左表中的数据,在加上表和匹配的数据;

直白点说就是,表的记录将会全部表示出来,而只会显示符合搜索条件的记录,同时右表中没有记录的地方均用NULL替代;

2.1 (左外连接标准写法)写法1:

select * from leftTable l left join rightTable r on l.id = r.id;
  • leftTable l 左表名称,后跟的是表的别名可写可不写,如果写了话,后面可以用别名来代替左表名称,同理是右表;

  • from 表1... left join 表2... on 关联匹配条件;

  • left join必须跟在from语句后,必须带on;

同理,右外连接全外连接,写法同上,只用修改连接关键字即可;

2.2(使用"(+)"表示)写法2:

对于外连接, 也可以使用(+)来表示,(+)放在哪边(左、右)表示另一边外连接


2.2.1(+)的使用及注意事项:
  • (+)操作符只能出现在where子句中,并且不能与outer join语法同时使用;

  • 当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符;

  • (+)操作符只适用于列,而不能用在表达式上;

  • (+)操作符不能与or和in操作符一起使用;

  • (+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接;


2.2.2 用(+)来实现(左、右)外连,看栗子, 这样理解+号比较好理解,栗子如下:

即 你可以把 +当做 补充,也就是说哪个表有加号,哪个表就是匹配表,这个表就是用来作补充的;

所以加号写在右表,左表就是全部显示,故是左连接;

// 左连
select * from table1 a, table2 b where a.id=b.id(+); 

同理,加号写左表,就是右连接;

// 右连
select * from table1 a, table2 b where a.id(+)=b.id; 

注意:

  • (+)号必须放到where后面;

  • (+)能表示左外连接或右外连接不能表示全外连接,即:

    • (+)要么放边,要么放边;

    • (+)不能两边都放

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容

  • 关系型数据库和SQL SQL语言的三个部分DML:Data Manipulation Language,数据操纵语...
    Awey阅读 1,884评论 0 13
  • MySQL技术内幕:SQL编程 姜承尧 第1章 SQL编程 >> B是由MySQL创始人之一Monty分支的一个版...
    沉默剑士阅读 2,355评论 0 3
  • SQL与MySQL简介 数据库基础 从SQL的角度来看,数据库就是一个以某种有组织的方式存储的数据集合。我们可以采...
    heming阅读 2,985评论 1 8
  • 01 当我们专注于沉默,而不去发声的时候, 这便表明,社会之间近乎于病态。 有一句话说的足够贴切, “到底是网友不...
    沐心说阅读 186评论 0 1
  • 人于世,何无事 事之多,做于世 人一生于世事中 未有一刻悠闲
    邬宥阅读 186评论 0 0