SQL inner join, join, left join, right join, full outer join
基本信息
创建两个表a1
, a2
。
两个表的重要差别是:
a1
中有5,'wu'
,a2
中没有。a2
中有4,'li'
,而a1中没有。
创建表和插入数据的代码如下:
-- 创建a1表
create table a1(
userid integer PRIMARY KEY,
username varchar(20)
);
-- 创建a2表
create table a2(
userid integer primary key,
username varchar(20)
);
insert into a1 values(1,'he');
insert into a1 values(2,'xiao');
insert into a1 values(3,'zhang');
insert into a1 values(5,'wu');
insert into a2 values(3,'zhang');
insert into a2 values(2,'xiao');
insert into a2 values(1,'he');
insert into a2 values(4,'li');
left join, right join
left join
是左外联,完整的写法是left outer join
。 这种连接,会把左表的一切保留,用右侧去匹配,匹配不了的为null
。如:
select a1.userid, a2.userid from a1 left join a2 on a1.userid=a2.userid;
得到的结果是:
注意到最后一行,左表a1
的5
被保留,而右表a2
没有与之对应的,因此为空。
右连接也一样,只不过把右表中的保留,左表去匹配,对不上的为null。
select a1.userid, a2.userid from a1 right join a2 on a1.userid=a2.userid;
full outer join
全外连接是把左右两边匹配,并且两边都保留,匹配不上就是null。
select a1.userid, a2.userid from a1 full outer join a2 on a1.userid=a2.userid;
得到的结果是:
注意后两行,都被保留了。这是与接下来inner join
最大的不同,inner join
会把这些匹配不上的都去掉。
inner join
注意如果不写任何left, rigth, full, inner
, 只写一个join
, 那么等同于Inner join
. 即: join 全等于 inner join
。 另外得到笛卡尔集再用where筛选,也可以获取到和inner join 一样的效果。详看最后一节。
inner join
会把左右匹配不上的都去掉,只保留那些匹配得上的。
select a1.userid, a2.userid from a1 inner join a2 on a1.userid=a2.userid;
笛卡尔集
以下代码,由于没有匹配和相等的列,因此会把所有可能的序列都列出来。
select a1.userid, a2.userid from a1,a2;
如果添加上where
的条件筛选,就跟 inner join
等同。
select a1.userid, a2.userid from a1,a2 where a1.userid=a2.userid;
SQL inner join, join, left join, right join, full outer join的更多相关文章
- SQL的JOIN语法解析(inner join, left join, right join, full outer join的区别)
原文链接:http://www.powerxing.com/sql-join/ 总的来说,四种JOIN的使用/区别可以描述为: left join 会从左表(shop)那里返回所有的记录,即使在右表( ...
- SQL中的left outer join,inner join,right outer join用法详解
这两天,在研究SQL语法中的inner join多表查询语法的用法,通过学习,发现一个SQL命令,竟然涉及到很多线性代数方面的知识,现将这些知识系统地记录如下: 使用关系代数合并数据1 关系代数合并数 ...
- SQL OUTER JOIN
When we want to select out all the record from two table, no matter it's present at second table or ...
- 009-Hadoop Hive sql语法详解4-DQL 操作:数据查询SQL-select、join、union、udtf
一.基本的Select 操作 语法SELECT [ALL | DISTINCT] select_expr, select_expr, ...FROM table_reference[WHERE whe ...
- SQL:OUTER JOIN使用方法具体解释
SQL--JOIN使用方法 外联接. 外联接能够是左向外联接.右向外联接或完整外部联接. 在 FROM 子句中指定外联接时,能够由下列几组keyword中的一组指定: LEFT JOIN 或 LEF ...
- left join 和 left outer join 的区别
left join 和 left outer join 的区别 通俗的讲: A left join B 的连接的记录数与A表的记录数同 A right join ...
- HIVE中join、semi join、outer join
补充说明 left outer join where is not null与left semi join的联系与区别:两者均可实现exists in操作,不同的是,前者允许右表的字段在select或 ...
- hive 包含操作(left semi join)(left outer join = in)迪卡尔积
目前hive不支持 in或not in 中包含查询子句的语法,所以只能通过left join实现. 假设有一个登陆表login(当天登陆记录,只有一个uid),和一个用户注册表regusers(当天注 ...
- inner join, left join, right join, full outer join的区别
总的来说,四种join的区别可以描述为: left join 会从左表(shop)那里返回所有的记录,即使在右表(sale_detail)中没有匹配的行. right outer join 右连接,返 ...
- sqlite数据库执行full outer join
sqlite数据库执行full outer join时提示:RIGHT and FULL OUTER JOINs are not currently supported. sqlite数据库不支持(+ ...
随机推荐
- Oracle删除重复数据并且只留其中一条数据
数据库操作中,经常会因为导数据造成数据重复,需要进行数据清理,去掉冗余的数据,只保留正确的数据 一:重复数据根据单个字段进行判断 1.首先,查询表中多余的数据,由关键字段(name)来查询. sele ...
- centos7 程序快捷方式
/usr/share/Applications 在此文件夹中,全是".desktop"的文件,利用终端打开一个看看就知道了!
- mysql DDL语言
- 《ES6标准入门》(阮一峰)--4.字符串的扩展
1.字符的 Unicode 表示法 ES6 加强了对 Unicode 的支持,允许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点. "\u0061" ...
- 2020/2/22 74cms3.5.1 代码审计
0x00 网站结构 简单试了一下.每一个模块还是比较清楚的,分别对应网站的一个模块.还有一些没有权限访问 0x01 通读代码 先看入口文件,index.php 开头先对网站是否安装做了判断 然后就是判 ...
- uni-app开发小程序-使用uni.switchTab跳转后页面不刷新的问题
uni.switchTab({ url: '/pages/discover/discover', success: function(e) { var page = getCurrentPages() ...
- nodeks —— fs模块 —— 从流中 读取和写入数据
Fs流读取和写入数据 使用文件流来读取大文件不会卡顿 1, 从流中读取数据 var fs = require("fs"); var data = ''; var count = 0 ...
- 六十、SAP中的加减乘除等算数运算符
一.代码和显示如下,很奇怪的事情是,负数的负号居然在数字后面
- Flink笔记(二) DataStream Operator(数据流操作)
DataStream Source 基于文件 readTextFile(path) 读取 text 文件的数据 readFile(fileInputFormat, path) 通过自定义的读取方式, ...
- MongoDB 数据建模
版权所有,未经许可,禁止转载 章节 MongoDB 入门 MongoDB 优势 MongoDB 安装 MongoDB 数据建模 MongoDB 创建数据库 MongoDB 删除数据库 MongoDB ...