这是一篇关于SQL 脚本表间连接join的可视化说明

使用SQL合并两个数据集可以通过JOINS来完成。JOIN是查询的FROM子句中的SQL指令,用于标识要查询的表以及它们应该如何组合。

主键和外键

通常,在关系数据库中,数据被组织到由属性(列)和记录(行)组成的各种表中。在每个表中存在一个列,该列是主键,该列中的每个条目唯一地表示该表中的单个行。这通常是ID(identifier的缩写)列。表中通过共享值与另一个表的主键建立关联的列称为外键。外键通常也是有标题的ID,但前面有被引用表的名称。

当使用JOIN将两个或多个表组合在一起时,就应用了这个概念。在下面的例子中,我们有两个表:用户表(表1)和事件表(表2)。我们希望将这两个表连接在一起,以获取用户数据以及事件数据。一个真实的例子是,如果你有一个CRM工具(如Salesforce)中包含付费用户(表1)和一个事件分析工具(如Mixpanel)中的数据,它可以跟踪所有在你的产品中执行某项操作的用户(表2)。
Example tables to JOIN
请注意,在两个表之间有一个以绿色突出显示的公共列(维度),即用户ID。在User Table中,ID列是用户ID,是该表的主键,而在Event Table中,User_ID列是外键,因为该列引用Users表中的ID列。我们可以使用这种关系将两个表连接在一起,以在一个表中获取用户和事件信息。

Meet the joins 满足连接

有三种常见的方法可以将任何两个或更多的表连接在一起,我们将首先讨论:外部连接(outer join)内部连接(inner join)左连接(left join)。使用上面的示例用户表(User Table)事件表(Event Table),让我们看看一些连接的示例…

Outer Join 外部连接

假设您希望拥有一个包含所有用户表和事件表数据的数据表。
您可以使用“outer join”将表连接在一起。如果可能,外部联接将来自一个或多个公共维度上的所有表的列组合在一起,并包括来自所有表的所有数据。

Outer JOIN

Inner Join 内部连接

What if you want to have a table that contains only users that have done an action?
如果您希望拥有一个只包含已执行操作的用户的表,该怎么办?
您可以使用内联接来将表联接在一起。如果可能,内部联接组合公共维度(前N列)上的列,并且仅包括公共N列中共享相同值的列的数据。在该示例中,用户ID将是用于内部联接的公共维度。

Inner JOIN

Left Join 左连接

现在,如果您希望拥有一个包含所有用户数据和这些用户执行的操作的表,该怎么办?不应包括不在用户表中的其他用户执行的操作?

您可以使用左连接将表连接在一起。如果可能,左联接将公共维度(前N列)上的列合并,返回第一个表中的所有行以及连续表中的匹配行。当没有匹配项时,连续表中的结果为NULL。在这种情况下,我们将使用户表作为左联接使用的第一个表(左表)。

Left JOIN

Union and Cross Join 联合和交叉联接

除了这些常见的联接类型之外,还有一些方法会导致输出表中的额外行和更多列。其中两种连接类型称为UnionCross Join。这些连接类型可能不适合上面的示例表,但是为了便于本文,我们仍然可以使用它们来了解这些连接是如何工作的。Union Join会将表堆叠在另一个的顶部,从而产生新的行。

UNION

一个很好的用例是,如果您希望通过追加而不是连接两个表来组合它们。交叉连接将导致一个表中的行的所有可能组合在一起。这可能会导致巨大的表,因此应谨慎使用。

Cross JOIN

交叉连接可能仅在表中包含单个值时使用,您希望在没有公共维度的情况下将这些值连接在一起。

摘要备忘单

SQL JOINs type cheat sheet

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/90940.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL运维

日志 错误日志 show VARIABLES like %log_error%;使用 tail -f 错误文件路径 可以查看具体错误二进制日志 show variables like %log_bin%;在my.ini文件下的mysqlID下添加 log_binmysql-bin binlog-formatROW重启就开启binlog了 show VARIABLES like %binlog_format%;mys…

i18n 配置vue项目中英文语言包(中英文转化)

一、实现效果 二、下载插件创建文件夹 2.1 下载cookie来存储 npm install --save js-cookienpm i vue-i18n -S 2.2 封装组件多页面应用 2.3 创建配置语言包字段 三、示例代码 3.1 main.js 引用 i18n.js import i18n from ./lang// 实现语言切换:i18n处理element&#xff0c…

屏蔽socket 实例化时,握手阶段报错信息WebSocket connection to ‘***‘ failed

事情起因是这样的: 我们网站是需要socket链接实行实时推送服务,有恶意竞争对手通过抓包或者断网,获取到了我们的socket链接地址,那么他就可以通过java写一个脚本无限链接这个socket地址。形成dos攻击。使socket服务器资源耗尽&…

【运维】linkis安装dss保姆级教程与踩坑实践

文章目录 一. 安装准备二. 创建用户三. 准备安装包四. 修改配置1. 修改config.sh2. 修改db.sh 五、安装和使用1. 执行安装脚本2. 启动服务3. 查看验证是否成功 六. 报错处理报错一:The user is not logged in报错二:dss接口报错报错三:执行没…

算法随笔:图论问题之割点割边

割点 定义 割点的定义:如果一个点被删除之后会导致整个图不再是一个连通图,那么这个顶点就是这个图的割点。举例: 上图中的点2就是一个割点,如果它被删除,则整个图被分为两个连通分量,不再是一个连通图。…

vue3多条件搜索功能

搜索功能在后台管理页面中非常常见&#xff0c;本篇就着重讲一下vue3-admin-element框架中如何实现一个顶部多条件搜索功能 一、首先需要在vue页面的<template></template>中写入对应的结构 <!-- 搜索 --><div style"display: flex; justify-content…

突破大模型 | Alluxio助力AI大模型训练-成功案例(一)

更多详细内容可见《Alluxio助力AI大模型训练制胜宝典》 【案例一&#xff1a;知乎】多云缓存在知乎的探索:从UnionStore到Alluxio 作者&#xff1a;胡梦宇-知乎大数据基础架构开发工程师&#xff08;内容转载自InfoQ&#xff09; 一、背景 随着云原生技术的飞速发展&#xff…

ApacheCon - 云原生大数据上的 Apache 项目实践

Apache 软件基金会的官方全球系列大会 CommunityOverCode Asia&#xff08;原 ApacheCon Asia&#xff09;首次中国线下峰会将于 2023 年 8 月 18-20 日在北京丽亭华苑酒店举办&#xff0c;大会含 17 个论坛方向、上百个前沿议题。 字节跳动云原生计算团队在此次 CommunityOve…

Java多线程编程中的线程间通信

Java多线程编程中的线程间通信 基本概念&#xff1a; ​ 线程间通信是多线程编程中的一个重要概念&#xff0c;指的是不同线程之间如何协调和交换信息&#xff0c;以达到共同完成任务的目的。 线程间通信的目的 ​ 是确保多个线程能够按照一定的顺序和规则进行协作&#xff…

使用QT可视化设计对话框详细步骤与代码

一、创建对话框基本步骤 创建并初始化子窗口部件把子窗口部件放到布局中设置tab键顺序建立信号-槽之间的连接实现对话框中的自定义槽 首先前面三步在这里是通过ui文件里面直接进行的&#xff0c;剩下两步则是通过代码来实现 二、项目创建详细步骤 创建新项目 为项目命名 为…

计算机组成原理之地址映射

例1&#xff1a;某计算机主存容量256MB&#xff0c;按字编址&#xff0c;字长1B&#xff0c;块大小32B&#xff0c;Cache容量512KB。对如下的直接映射方式、4-路组相联映射方式、全相联映射方式的内存地址格式&#xff0c;求&#xff1a; &#xff08;1&#xff09;计算A、B、C…

案例研究|大福中国通过JumpServer满足等保合规和资产管理双重需求

“大福中国为了满足安全合规要求引入堡垒机产品&#xff0c;在对比了传统型堡垒机后&#xff0c;发现JumpServer使用部署更加灵活&#xff0c;功能特性丰富&#xff0c;能够较好地满足公司在等保合规和资产管理方面的双重需求。” ——大福&#xff08;中国&#xff09;有限公…

网络编程(8.14)TCP并发服务器模型

作业&#xff1a; 1. 多线程中的newfd&#xff0c;能否修改成全局&#xff0c;不行&#xff0c;为什么&#xff1f; 2. 多线程中分支线程的newfd能否不另存&#xff0c;直接用指针间接访问主线程中的newfd,不行&#xff0c;为什么&#xff1f; 多线程并发服务器模型原代码&…

YOLOv5基础知识入门(3)— 目标检测相关知识点

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLO算法发展历程和YOLOv5核心基础知识学习完成之后&#xff0c;接下来我们就需要学习目标检测相关知识了。为了让大家后面可以顺利地用YOLOv5进行目标检测实战&#xff0c;本节课就带领大家学习一下目标检测的基础知识点&…

SpringBootWeb案例

通过该综合案例,我们就可以知道,在开发一个Web程序时,前端程序、后端程序以及数据库这三者之间是如何交互、如何协作的,而通过这个综合案例也需要掌握根据接口文档开发服务端接口的能力。 而这个案例呢,就是Tlias智能学习辅助系统。 产品经理所绘制的页面原型: 在这个案…

less基本使用

1 less中的变量 //对值进行声明 link-color: #ccc//定义变量名称 .{sleName} {}bg: background-color; //定义属性名称 .container {{bg}: red; }2 继承&#xff08;复用重复样式&#xff09; //继承必须位于选择器最后 //继承选择器名不能为变量 .a:hover:extend(.b) {}.a {…

数据结构篇七:排序

文章目录 前言1.插入排序1.1 基本思想1.2 代码实现1.3 特性总结 2.希尔排序2.1 基本思想2.2 代码实现2.3 特性总结 3. 选择排序3.1 基本思想3.2 代码实现3.3 特性总结 4. 堆排序4.1 基本思想4.2 代码实现4.3 特性总结 5. 冒泡排序5.1 基本思想5.2 代码实现5.3 特性总结 6. 快速…

浦东优秀解决方案!闪马智能加速赋能数字化转型

近日&#xff0c;由上海市浦东新区城市数字化转型应用促进中心和上海数字产业发展有限公司联合主办的2023年浦东新区“数转汇”品牌活动启动仪式暨上海数产“科技下午茶”活动举行。现场“2022年浦东新区数字化转型应用优秀解决方案”正式发布&#xff0c;凭借智慧交通一体化感…

VM中linux虚拟机配置桥接模式(虚拟机与宿主机网络互通)

VM虚拟机配置桥接模式&#xff0c;可以让虚拟机和物理主机一样存在于局域网中&#xff0c;可以和主机相通&#xff0c;和互联网相通&#xff0c;和局域网中其它主机相通。 vmware为我们提供了三种网络工作模式&#xff0c;它们分别是&#xff1a;Bridged&#xff08;桥接模式&…

智头条|DFM-2大模型吹热智能家居,360安全云正式发布

行业动态 DFM-2大模型吹热智能家居 近期,思必驰行业语言计算大模型DFM-2正式发布,也带来了人机交互能力的提升和优秀的技术落地能力。DFM-2大模型与DUI平台结合推出DUI2.0,完成了对话式AI全链路技术的升级,推进深度产业应用。在智能家居领域,目前思必驰已与海信、长虹美菱、老…