left join、right join

2024-06-18 18:58
文章标签 join left right

本文主要是介绍left join、right join,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

总结

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

inner join(等值连接) 只返回两个表中联结字段相等的行

属于外部连接



举例如下: 
--------------------------------------------
表A记录如下:
aID     aNum
1     a20050111
2     a20050112
3     a20050113
4     a20050114
5     a20050115


表B记录如下:
bID     bName
1     2006032401
2     2006032402
3     2006032403
4     2006032404
8     2006032408


--------------------------------------------

1.left join

sql语句如下: 
select * from A
left join B 
on A.aID = B.bID


结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL


(所影响的行数为 5 行)
结果说明:
left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.
--------------------------------------------

2.right join

sql语句如下: 
select * from A
right join B 
on A.aID = B.bID


结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
NULL     NULL     8     2006032408


(所影响的行数为 5 行)
结果说明:

仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充



这篇关于left join、right join的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1072834

相关文章

力扣SQL50 每位经理的下属员工数量 join

Problem: 1731. 每位经理的下属员工数量 👨‍🏫 参考题解 Code select m.Employee_id, m.name,count(*) reports_count,round(avg(e.age),0) average_agefrom Employees ejoin Employees mon e.reports_to = m.Employee_id

53、Flink Interval Join 代码示例

1、概述 interval Join 默认会根据 keyBy 的条件进行 Join 此时为 Inner Join; interval Join 算子的水位线会取两条流中水位线的最小值; interval Join 迟到数据的判定是以 interval Join 算子的水位线为基准; interval Join 可以分别输出两条流中迟到的数据-[sideOutputLeftLateData,

Spark算子:RDD键值转换操作(4)–cogroup/join

cogroup 函数原型:最多可以组合4个RDD,可以通过partitioner和numsPartitions设置 def cogroup[W1, W2, W3](other1: RDD[(K, W1)], other2: RDD[(K, W2)], other3: RDD[(K, W3)], partitioner: Partitioner) :RDD[(K, (Iterable[V],

MySQL入门学习-连接查询.CROSS JOIN

CROSS JOIN(交叉连接) :返回左表中的所有行,左表中的每一行与右表中的所有行组合,返回的行数等于左表行数乘以右表行数。 一、连接查询包括: 1. CROSS JOIN(交叉连接) : 返回左表中的所有行,左表中的每一行与右表中的所有行组合。 2. INNER JOIN(内连接) : 返回左表和右表中满足连接条件的行。 3. LEFT JOIN(左外连接) :

Fork-Join框架的简单使用

一、Fork-Join框架作用  Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork/Join框架要完成两件事情:   1.任务分割:首先Fork/Join框架需要把大的任务分割成足够小的子任务,如果子任务比较大的话还要对子任务进行继续分割   2.执行任务并合并结果:分割的子任务分别

MySQL入门学习-连接查询.LEFT JOIN

LEFT JOIN = 左连接:只要左表(table1)中有记录,数据就能检索出来,如果记录在右表(table2)中找不到,MySQL 会用 null 填充剩下的字段;右连接反之。 ```sql select * from table1 left join table2 on table1.name = table2.name; ```        这是数据库中最常用的操作

力扣SQL50 至少有5名直接下属的经理 子查询 join 虚拟表

Problem: 570. 至少有5名直接下属的经理 👨‍🏫 参考题解 🍻子查询 select name from Employeewhere id in(select managerId from Employee group by managerId having managerId != 'null' and count(*) >= 5); 🍻 join 虚拟

【SQL每日一练】HackerRan-Basic Join-Challenges练习

文章目录 题目题析题解1.sqlserver 题目 编写一个查询来打印 hacker _ id、 name 和每个学生创建的挑战的总数。按照挑战的总数按降序对结果进行排序。如果不止一个学生创建了相同数量的挑战,那么按 hacker _ id 对结果进行排序。如果不止一个学生创建了相同数量的挑战,且计数少于创建的最大数量的挑战,则将这些学生排除在结果之外。 输入格式: 下表包

51、Flink 窗口 Join 之滑动窗口事件时间 Join 代码示例

1、概述 窗口中的水位线取的是两条流中的最小值; 一个流中的元素如果没有与另一个流中的元素组合起来,它就不会被输出; 2、代码示例 import org.apache.flink.api.common.eventtime.SerializableTimestampAssigner;import org.apache.flink.api.common.eventtime.Watermark

Java-拼接字符串数组(String.join()方法)

问题引入 刷算法题lc2288的时候遇见的一个小细节,记录一下,有兴趣的朋友可以做一下,练习一下哈哈~ 此题需要使用大家都比较熟悉的split方法将句子按照空格拆分为字符串数组。 然后再在数组中对每一个字符串操作,操作完成后要求返回字符串数组连起来的句子。 博主当时的做法是: StringBuilder sb = new StringBuilder();for (int i = 0;