首页 > 其他分享 >join、inner join、left join、right join、outer join的区别

join、inner join、left join、right join、outer join的区别

时间:2024-05-17 10:19:20浏览次数:26  
标签:right outer 运算 联结 join left

什么是联结?
union、intersect等集合运算,它的特征是以 “行” 为单位进行操作,通俗点说,就是进行这些集合运算,会导致记录行数的增减,使用union会增加记录行数,使用 intersect 或 expect 会减少行记录,集合运算不会导致 “列” 数量的改变。而联结(join) 操作,就是将其他表中的列添加过来,进行 “列添加”的运算。当需要从多张表中取出不同的列组成一个新的查询结果时,就需要用的联结(join)运算了。以下是几种联结运算的简单说明。

1、join 和 inner join是一样的,为了简写省掉 inner 可直接写为 join, 内联结,表示以两个表的交集为主,查出来是两个表有交集的部分,其余没有关联就不额外显示出来,如下;

2、left join 左联结,就是“左联结”,表1 left join 表2,以左为主,表示以表1为主,关联上表2的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。如下

3、right join “右联结”,表1 right join 表2,以右为主,表示以表2为主,关联查询表1的数据,查出表2所有数据以及表1和表2有交集的数据,如下:

4、outer join,在MySQL中, 外联结必须指定主表,需指定左右,也即 left outer join,right outer join,实际上,就是 left join 和 right join,为了方便书写把outer省略掉了,在Oracle中,支持全外联结,即 full outer join;

5、下图可以囊括联结的所有情况

 

 

 

6、交叉联结 CROSS JOIN (也就是耳熟能详的的笛卡尔积),交叉联结的结果是两个表中行数的乘积,交叉联结的结果中包含了内连接,外连接,全连接的所有结果。实际业务中很少会使用交叉联结,因为交叉联结的记过没有实用价值,运算结果函数太多,需要浪费很多运算性能。

标签:right,outer,运算,联结,join,left
From: https://www.cnblogs.com/huangzhicai/p/18197338

相关文章

  • 使用joinjs绘制流程图(十)-实战-绘制流程图+自定义节点样式(优化)
    问题前面自定义节点的样式坐标位置不对,我们希望自定义节点的坐标和rect元素的位置是一样的效果图代码<template><divclass="app"><divref="myholder"id="paper"></div></div></template><script>import*asjointfrom&......
  • 使用joinjs绘制流程图(九)-实战-绘制流程图+节点路径自定义升级版
    效果图自定义路径设计本示例假设当前节点和其他节点不在同一纵坐标的情况下代码<template><divclass="app"><divref="myholder"id="paper"></div></div></template><script>import*asjointfrom'@joint/......
  • 使用playwright控制浏览器在服务器端将网页转化为PDF文件
    需求在实际需要中,经常存在需要在服务器端将网页转化为PDF文件保存下来。代码requirements.txt点击查看代码playwrightconvert_pdf.py点击查看代码fromplaywright.sync_apiimportsync_playwright,Playwrightimportargparsedefrun(playwright:Playwright,url......
  • 比Selenium更优秀的playwright介绍与未来展望
    Playwright是微软开发的,专门为满足端到端测试需求而创建的。Playwright支持包括Chromium、WebKit和Firefox在内的所有现代渲染引擎。在Windows、Linux和macOS上进行测试,本地或在CI上,无头或有头,带有本机移动仿真。安装安装playwright库pipinstall--upgradepippipinstall......
  • 零操作,高效下载:利用Playwright和Python完成文件下载
    前言Playwright是一个由Microsoft开发的跨浏览器自动化测试工具,它提供了强大的功能来模拟用户在浏览器中的操作。Playwright还可以应用于诸如文件下载等实际场景的测试。本文将介绍如何利用Playwright在Python中实现文件下载功能。文件下载文件下载也是我们进行web自......
  • Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界
    前言我们在进行web自动化时,经常遇到一些不好操作的元素,普通的元素定位和操作容易报错,如果我们使用的selenium的话,就可以使用selenium调用js脚本进行操作。在playwright中也有类似的方法,使用page.evaluate()执行JavaScript脚本。page.evaluate()和page.evaluate_handle()之间的......
  • 使用joinjs绘制流程图(八)-实战-绘制流程图+节点路径自定义
    效果图代码<template><divclass="app"><divref="myholder"id="paper"></div></div></template><script>import*asjointfrom'@joint/core'import$from'jque......
  • SystemVerilog -- 3.2 SystemVerilog Threads --> fork join_any
    forkjoin_any在一个简单的SystemVerilog中,mainthread会等到所有childthread都完成执行。这意味着如果任何childthread永远运行并且永远不会完成,则fork将挂起模拟。SystemVerilog还提供了带有forkjoin和forkjoin_any的原始版和变体。如果任何一个childthread完成,则允许ma......
  • 使用 Playwright 复用 Cookie:简化自动化测试的高效方法
    前言在进行自动化测试时,有时需要在多个测试用例之间共享相同的会话状态。为了实现这一目标,Playwright提供了一种称为Cookie复用的功能,可以让我们在不同的测试用例之间共享同一组Cookie数据。本文将深入介绍如何使用Playwright复用Cookie,并探讨其使用方法和优势。什么是......
  • 无需手动操作:利用 Playwright 自动上传文件
    前言Playwright是一个由Microsoft开发的自动化测试工具,它提供了跨浏览器的自动化测试能力,包括Chrome、Firefox和Safari。除了测试之外,Playwright还可以用于执行浏览器操作,例如模拟用户行为来实现文件上传功能。在本文中,我们将使用Playwright和Python实现自动上传文件......