前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《深入浅出SQL》问答录(九)

《深入浅出SQL》问答录(九)

作者头像
看、未来
发布2020-08-25 17:03:36
5940
发布2020-08-25 17:03:36
举报
在这里插入图片描述
在这里插入图片描述

花絮

左外联接

LEFT OUTER JOIN 会匹配左表中的每一行及右表中符合条件的行。 当左表与右表具有一对多关系时,左外联接特别有用。

理解外联接的最大秘密在于知道表在左边还是右边,在LEFT OUTER JOIN中,出现在FROM后,联接前的表称为左表,而出现在联接后的表称为右表。

代码语言:javascript
复制
SELECT g.girl,t.toy
FROM girls g	--g是左表
LEFT OUTER JOIN toys t	--t是右表
ON g.toy_id = t.toy_id; 

内外联接有什么差别?外联接一定会提供数据行,无论该行能否在另一个表中找出相匹配的行。 左外联接的结果为NULL表示右表没有找到与左表相符的记录。

在这里插入图片描述
在这里插入图片描述

具体流程概览(图有点小瑕疵):

在这里插入图片描述
在这里插入图片描述

右外联接

有外联接与左外联接一样,除了它是用右表与左表比对。

自联接

同一个表可以同时作为外联接的左右表。虽然听起来很奇怪,不过却很好用。

来一题看看;

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
SELECT c1.name,c2.name AS boss
FROM clown_info1 c1
INNER JOIN clown_info2 c2
ON c1.bossid = c2.id
; 

自联接能够把一张表当成两张完全相同的表来进行查询。

UNION

还有一种取得多张表的查询结果的方式:UNION联合。

UNION根据我们在SELECT中指定的列,把两张表或更多张表的查询结果合并至一个表中。

代码语言:javascript
复制
SELECT title FROM job_current
UNION
SELECT title FROM job_desired
UNION
SELECT title FROM job_listings;
UNION的使用限制
在这里插入图片描述
在这里插入图片描述
示例
代码语言:javascript
复制
SELECT title FROM job_current
UNION
SELECT title FROM job_desired
UNION
SELECT title FROM job_listings
ORDER BY title;

结果集:

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
SELECT title FROM job_current
UNION ALL
SELECT title FROM job_desired
UNION ALL
SELECT title FROM job_listings
ORDER BY title;

结果集:

在这里插入图片描述
在这里插入图片描述

联合规则说:选取的列必须可以互相转换。

联接VS子查询

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

问答录

Q:有使用左外连接取代右外联接的理由吗?

A:一般来说,固定使用一种联接的习惯会让事情更简单,这样不容易搞混。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 花絮
    • 左外联接
      • 右外联接
        • 自联接
          • UNION
            • UNION的使用限制
            • 示例
          • 联接VS子查询
          • 问答录
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档