SQL 干货 | SQL 半连接
大多数数据库开发人员和管理员都熟悉标准的内、外、左和右连接类型。虽然可以使用 ANSI SQL 编写这些连接类型,但还有一些连接类型是基于关系代数运算符的,在 SQL 中没有语法表示。今天我们将学习一种这样的连接类型:半连接(Semi Join)。下周我们将讨论与之类似的反连接。为了更好地了解这些连接类型是如何工作的,我们将在 Navicat Premium Lite 17 中对 PostgreSQL dvdrental 数据库 执行一些 SELECT 查询。这是一个基于 MySQL Sakila 样本数据库的免费数据库。
半连接的解释
试想一下,ANSI SQL 支持半连接。如果支持的话,其语法可能与 Cloudera Impala 的语法扩展类似,即左半连接和右半连接。于此相关的,下面是一个使用半连接的查询:
SELECT * FROM actor LEFT SEMI JOIN film_actor USING (actor_id)
上述查询将返回所有出演过电影的演员。但问题是,我们不希望结果中出现任何电影,也不希望同一演员出现在多行中。我们只希望每个演员在结果中出现一次(或零次)。“Semi”一词来源于拉丁语,在英语中翻译为“half”。因此,我们的查询只实现了“半连接”,在这种情况下是左半边。在 SQL 中,我们可以使用两种语法来完成半连接:EXISTS 和 IN。
使用 EXISTS 实现半连接
下面是使用 EXISTS 进行半连接的等价方法:
SELECT * FROM actor a WHERE EXISTS (SELECT * FROM film_actor faWHERE a.actor_id = fa.actor_id )
如果我们在 Navicat Premium Lite 17 中执行我们的查询,可以看到它与预期的一样:
EXISTS 操作符不使用连接,而是检查 film_actor 表中是否存在一个演员的一条或多条记录。 由于使用了 WHERE 子句,大多数数据库都能识别出我们执行的是 SEMI JOIN 而不是普通的 EXISTS()。
使用 IN 实现半连接
IN 和 EXISTS 是完全等价的 SEMI JOIN 模仿,因此在大多数数据库中,下面的查询会产生与前面的 EXISTS 查询完全相同的结果:
SELECT * FROM actor WHERE actor_id IN (SELECT actor_id FROM film_actor )
下面是在 Navicat Premium Lite 17 中执行的上述查询和其结果:
EXISTS 被认为是功能更强大的语法(尽管它有些繁杂)。
结语
在今天的博客中,我们学习了如何使用 ANSI SQL 语法模拟半连接。 除了在“正确性”方面是最佳解决方案外,使用“半”连接(SEMI)而不是内连接(INNER JOIN)在性能上也有一些好处,因为数据库可以在找到第一个匹配项后立即停止寻找匹配项。
是否有兴趣试用下 Navicat Premium Lite 17?你可以下载它进行 为期 14 天的全功能免费试用。 它适用于 Windows、macOS 和 Linux 操作系统。
Navicat 17 最新资讯 & 技术干货
- Navicat 17 体验官火热招募中
- Navicat- 17 新特性 | 用户界面再升级
- Navicat 17 新特性 | 模型设计创新与优化
- Navicat 17 新特性 | 查询与配置
- Navicat 17 新特性 | Navicat BI 功能革新升级
- Navicat 17 新特性 | 原生支持国产 Linux ARM 平台以及银河麒麟与统信操作系统
- 聚焦 Navicat 17 新特性 | 数据字典提升数据结构清晰度
- Navicat 17 新增 PolarDB 与 Garnet 数据库
- Navicat 17 新特性 | 聚焦 MongoDB
- Navicat 17 新特性 | 新增 Redis 哨兵部署模式
- 免费版 Navicat Premium Lite
相关文章:
SQL 干货 | SQL 半连接
大多数数据库开发人员和管理员都熟悉标准的内、外、左和右连接类型。虽然可以使用 ANSI SQL 编写这些连接类型,但还有一些连接类型是基于关系代数运算符的,在 SQL 中没有语法表示。今天我们将学习一种这样的连接类型:半连接(Semi …...
洛谷 P1226:【模板】快速幂
【题目来源】https://www.luogu.com.cn/problem/P1226【题目描述】 给你三个整数 a,b,p,求 a^b mod p。【输入格式】 输入只有一行三个整数,分别代表 a,b,p。【输出格式】 输出一行一个字符串 a^b mod ps&a…...
nginx常规操作
Linux下查找Nginx配置文件位置 1、查看Nginx进程 ps -aux | grep nginx 圈出的就是Nginx的二进制文件 2、测试Nginx配置文件 /usr/sbin/nginx -t 可以看到nginx配置文件位置 3、nginx的使用(启动、重启、关闭) 首先利用配置文件启动nginx。 nginx -c /usr/local/nginx/conf…...
Docker镜像不能访问
Get "https://registry-1.docker.io/v2/": dial tcp 192.168.10.194:443: connect: connection refused Idea推送镜像至Harbor私服,报以上错误,Docker镜像地址不能访问,更新Harbor服务器Docker镜像地址,重启Docker服务…...
TCP simultaneous open测试
源代码 /*************************************************************************> File Name: common.h> Author: hsz> Brief:> Created Time: 2024年10月23日 星期三 09时47分51秒**********************************************************************…...
Spring 配置文件动态读取pom.xml中的属性
需求: 配置文件中的 spring.profiles.active${env}需要打包时动态绑定。 一、方案: 在pom.xml文件中配置启用占位符替换 <profiles><!-- 本地开发 --><profile><id>dev</id><properties><env>dev</env>…...
Konva 组,层级
代码: <template><div class"rect"><div class"header"> <!-- <el-button type"primary" click"show">展示</el-button>--> <!-- <el-button type"success&quo…...
vue图片加载失败的图片
1.vue图片加载失败的图片 这个问题发生在测试环境和开发本地,线上环境是可以的,测试环境估计被第三方屏蔽了 2.图片有,却加载不出来 <template v-slot:imageUrlsSlots"{ row }"><div class"flexRow rowCenter"&…...
终止,半成收入来自海外,收入可持续性被质疑
芬尼科技终止原因如下:芬尼科技4年期间经历了两次IPO失败,公司半成收入来自海外,然而公司泳池收入面临欧洲地区冲突冲击及德国新节能措施影响。交易所质疑其收入是否具有可持续性。 作者:Eric 来源:IPO魔女 9月25日&a…...
日常记录,使用springboot,vue2,easyexcel使实现字段的匹配导入
目前的需求是数据库字段固定,而excel的字段不固定,需要实现excel导入到一个数据库内。 首先是前端的字段匹配,显示数据库字段和表头字段 读取表头字段: 我这里实现的是监听器导入,需要新建一个listen类。 读Excel …...
Unable to open nested entry ‘********.jar‘ 问题解决
今天把现网版本的task的jar拖回来然后用7-zip打开拖了一个jar进去替换mysql-connector-java-5.1.47.jar 为 mysql-connector-java-5.1.27.jar 启动微服务的时候就报错下面的 Exception in thread "main" java.lang.IllegalStateException: Failed to get nested ar…...
反编译华为-研究功耗联网监控日志
摘要 待机功耗中联网目前已知的盲点:App自己都不知道的push类型的被动联网、app下载场景所需时长、组播联网、路由器打醒AP。 竞品 策略 华为 灭屏使用handler定时检测(若灭屏30分钟内则周期1分钟,否则为2分钟),检…...
线程池——Java
一、前言 在字符串常量池中,字符串常量在java程序运行之前就已经创建好了,等程序运行起来后,就可以直接从常量池中拿到字符串并加载到内存中,这样的设计就省下了字符串的构造与销毁的内存开销。 二、优势 操作系统由内核与应用程…...
java 17天 TreeSet以及Collections
SortedSet TreeSet Collections 所有单值集合 1 SortedSet 特点:有序 唯一 实现类:TreeSet 利用TreeSet特有的对数据进行升序,再放到ArryList进行for下标倒序打印,或者利用自身的pollLast()取出最后元…...
JavaScript 第27章:构建工具与自动化
在现代JavaScript开发中,构建工具、代码转换工具、代码质量和代码格式化工具对于提高开发效率、保持代码整洁以及确保代码质量有着至关重要的作用。下面将分别介绍Webpack、Babel、ESLint和Prettier的配置与使用,并给出一些示例。 1. 构建工具ÿ…...
Android原生ROM出现WIFI显示网络连接受限,网络无法连接的问题
Android原生ROM出现WIFI显示网络连接受限,网络无法连接的问题 最近手里一台乐视的手机root后, 连接wifi时一直提示网络连接受限,wifi图标显示叹号. 但是不影响正常的网络访问. 解决办法: adb shell settings delete global captive_portal_modeadb shell settings put globa…...
如何实现网页上的闪烁效果
在网页上实现闪烁效果通常可以通过CSS或者JavaScript来完成。有两种方法:一种是使用纯CSS,另一种是结合JavaScript来创建更复杂的闪烁效果。 方法一:使用纯CSS CSS中可以使用animation属性来创建简单的动画效果,包括闪烁效果。这…...
事件总线—Event Bus 使用及讲解
一、工作原理 事件总线,主要用来实现非父子组件之间的传值。 它的工作原理:通过new Vue()再创建一个新的 Vue 实例对象bus,将这个新的实例对象作为桥梁,来实现两个组件之间的传值。 二、工作步骤 1、创建事件总线 bus 我们可以…...
信息安全工程师(67)网络流量清洗技术与应用
前言 网络流量清洗技术是现代网络安全领域中的一项关键技术,它主要用于过滤和清理网络流量中的恶意部分,确保正常的网络通信。 一、网络流量清洗技术的定义与原理 网络流量清洗技术,也称为流量清理(Traffic Scrubbing)…...
【项目】论坛系统测试
文章目录 一、项目介绍二、测试环境三、测试用例3.1 论坛系统功能测试用例3.2 论坛系统非功能测试用例 四、测试计划1. 手工测试1.1 注册页面1.2 登陆页面1.3 主页面(列表页) 2. 自动化测试2.1 添加对应的依赖2.2 Utils类(公有类)…...
XJ02、消费金融|消费金融业务模式中的主要主体
根据所持有牌照类型的不同,消费金融服务供给方主要分为商业银行、汽车金融公司、消费金融公司和小贷公司,不同类型机构定位不同、提供消费金融服务与产品类型也各不相同。此外,互联网金融平台也成为中国消费金融业务最重要的参与方之一&#…...
基于神经网络的农业病虫害损失预测
【摘 要】鉴于农业病虫害经济损失的预测具有较强的复杂性和非线性特性,设计了一种新型的GRNN预测模型,对农业病虫害经济损失进行预测。该模型基于人工神经网络捕捉非线性变化独特的优越性,在神经网络技术和江苏省气象局提供的数据的基础上&am…...
【DSP】TI 微控制器和处理器的IDE安装CCSTUDIO
【DSP】TI 微控制器和处理器的IDE安装CCSTUDIO 1.背景2.下载IDE3.安装IDE1.背景 TI:Texas instruments即德州仪器公司。 https://www.ti.com.cn/CCSTUDIO即Code Composer Studio。 Code Composer Studio 是适用于 TI 微控制器和处理器的集成开发环境 (IDE)。 它包含一整套用于…...
Web应用框架-Django应用基础
1. 认识Django Django是一个用Python编写的开源高级Web框架, 旨在快速开发可维护和可扩展的Web应用程序。 使用Django框架的开发步骤: 1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护 Django官网: Djang…...
qt QMainWindow详解
一、概述 QMainWindow继承自QWidget,并提供了一个预定义的布局,将窗口分成了菜单栏、工具栏、状态栏和中央部件区域。这些区域共同构成了一个功能丰富的主窗口,使得应用程序的开发更加简单和高效。 二、QMainWindow的常用组件及功能 菜单栏&…...
第二单元历年真题整理
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 参考答案 1. A 2. A 3. A 4. D 5. D 6. D 解析: 栈和队列是两个不一样的结构,不能放在一起表示 7. B 8. C 解析: S --> A0 | B1 --> (S1 | 1) 0 | (S0 | 0)1 --> S10 | 10 | S…...
Ubuntu下载protobuf
1 安装依赖库 sudo apt-get install autoconf automake libtool curl make g unzip -y2 下载protobuf ProtoBuf 下载地址:https://github.com/protocolbuffers/protobuf/releases 如果要在 C 下使⽤ ProtoBuf,可以选择cpp.zip 其他语言选择对应的链接即可 希望支持…...
【算法优化】混合策略改进的蝴蝶优化算法
摘要 蝴蝶优化算法 (Butterfly Optimization Algorithm, BOA) 是一种新兴的智能优化算法,其灵感来自蝴蝶的觅食行为。本文基于经典BOA,通过引入混合策略进行改进,从而提高其在全局寻优和局部搜索中的性能。实验结果表明,改进的蝴…...
什么是标准差?详解
文章目录 一、什么是标准差?二、公式三、举个例子🌰参考 一、什么是标准差? 在统计学中,标准差(Standard Deviation)是用于衡量变量值围绕其平均值变化程度的指标。低标准差表示这些值通常接近平均值&…...
C++20中头文件syncstream的使用
<syncstream>是C20中新增加的头文件,提供了对同步输出流的支持,即在多个线程中可安全地进行输出操作,此头文件是Input/Output库的一部分。包括: 1.std::basic_syncbuf:是std::basic_streambuf的包装器(wrapper)&…...
配色设计网站推荐/aso搜索优化
adb常用命令总结 程序员你可以考虑安装的15款谷歌插件 推荐20套实战源码 99%的人不知道搜索引擎的6个技巧 12款好用的Visual Studio插件,最后一款良心推荐 bootstrap自带的响应式导航栏是向下滑动的,有时满足不了个性化的需求,需要做一…...
用php做视频网站的步骤/网络营销专业学什么
在SQL SERVER中,cast和convert函数都可用于类型转换,其功能是相同的, 只是语法不同. cast一般更容易使用,convert的优点是可以格式化日期和数值. select CAST(123 as int) -- 123 select CONVERT(int, 123) -- 123select CAST(123.4 as int) -- 123 select CONVERT(int, 1…...
个人做网站怎么盈利/爱营销电信版下载app最新版
win10系统使用久了,好多网友反馈说关于对win10系统桌面图标显示和背景修改设置的方法,在使用win10系统的过程中经常不知道如何去对win10系统桌面图标显示和背景修改进行设置,有什么好的办法去设置win10系统桌面图标显示和背景修改呢ÿ…...
做宣传图册在什么网站/网络营销活动策划方案模板
ylbtech-JS:函数-导航函数定义返回函数调用一个函数调用一个函数(带参数)返回值的函数调用外部的js文件JS:3.1,函数(function)-定义返回顶部 1,定义函数语法 通过定义函数名称,参数和代码语句来创建函数。function 函数…...
石家庄微信网站建设/网站推广手段
什么程度的英语水平才叫好?进来测测你的等级 什么程度的英语水平才叫好? LV1:与母语为英语的人能进行简单的沟通,互相明白意思LV2:你可以阅读并且撰写英文书信或者商业电邮LV3:你明白英文里的缩写,惯用语和…...
正邦 网站建设/不花钱网站推广
原文:http://coolketang.com/staticDesign/5a97b8c39f5454403c50830f.html1. 本节课将为您详细讲解渐变面板的使用。首先选择文档中的黑色图形。 2. 然后点击工具栏底部的[渐变]图标,给图形填充渐变颜色。渐变是指两个或多个颜色的渐变混合。 3. 接着依次…...