SQL自连接:什么时候需要,什么时候不需要?

通过具体示例和对比解析,彻底搞懂SQL自连接的使用场景

在处理SQL查询时,尤其是当表中存在自引用关系(如referee_id引用同一张表的id)时,很多开发者会疑惑:这个查询到底需不需要自连接?本文将通过多个具体示例,带你彻底弄清何时只需简单筛选,何时必须使用自连接。

一、一个引子:为什么这个查询不需要自连接?

来看一个经典问题:

题目:寻找用户推荐人

表结构如下:

CREATE TABLE Customer (id INT PRIMARY KEY,name VARCHAR(255),referee_id INT
);

要求:找出所有被非2号用户推荐,或没有被任何用户推荐的客户姓名。

很多人的第一反应:既然referee_id引用了同一张表的id,是不是应该自连接?

正确答案:不需要自连接。

SELECT name 
FROM Customer 
WHERE referee

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

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

相关文章

「美」创新在于人,而不是产品 - AxureMost 落葵网

添加图片注释,不超过 140 字(可选) 第一章:创新的心理学 创新与心理安全 蜡烛问题:卡尔邓克尔的蜡烛问题实验揭示了创造性思维的重要性。通过颠覆对盒子用途的先入为主观念,参与者能够找到创新性的解决方案…

新规则,新游戏:AI时代下的战略重构与商业实践

当你的客服AI能够真正像员工一样理解客户的行业术语,当AI能主动从大量的客户咨询中筛选出高价值潜在客户 —— 这已经不再是理想中才能存在的场景,而是当下 “人工智能 ” 行动深入推进中,企业智能化转型的真实写照。 "人工智能 " …

ScanNet: Richly-annotated 3D Reconstructions of Indoor Scenes 数据集构建

paper link: paperlink Abstract: 这个数据集是个RGB-D视频数据集,在707个不同空间中获取了1513个扫描的场景,250w个视图,并且标注了相机位姿,表面重建,语义分割。本数据集共有20人扫描500名工作者进行标注。 数据集…

c语言期末复习

一、选择题(10道) 1、以下哪个不是C语言的关键字? A) int B) float C) string D) while (答案:C) 2、表达式 5 / 2 的结果是: A) 2.5 B) 2 C) 3 D) 2.0 (答案:B) 3、指针变量存储的是: A) 变量的值 B) 变量的地址 C) 变量的类型 D) 变量的名称 (答案:B) 4、以…

JLINK 调试器单步调试单片机

0 JLINK 调试器单步调试单片机 1 物理层1.1 调整电压和开发板一致2 环境搭建 2.1 安装 JLink_Windows_V862_x86_642.2 vscode 配置 {"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "…

大模型(LLM)安全保障机制(技术、标准、管理)

大模型(LLM)的安全保障涉及技术、标准、管理等多个层面。下面我将结合其核心风险,为你梳理主要的安全机制、相关标准框架以及一些实践建议。为了让您快速了解大模型面临的主要风险及相应的应对机制,我准备了一个表格:安…

虚拟机之CentOS、网络设置的有趣问题

前言 年初射出的子弹,今天中了。 年初埋下的坑,今年踩了。 回首过往,why? because:当时下载VMware的时候。没有设置网络。 重点——使用VMware安装CentOS 9 使用VMware安装CentOS Stream 9_哔哩哔哩_bilibili 总…

Biomni:来自斯坦福的通用型生物医学 AI 智能体,科研“虚拟助手“来了!

在当今生物医学研究中,实验手段和数据量正以前所未有的速度膨胀。从基因组学、单细胞组学到多模态数据,再到可穿戴设备的健康监测,科研人员每天都在与庞大的数据和复杂的分析流程打交道。 然而,实验设计琐碎、工具分散、跨学科整合…

移植后 eto 阳性 干扰素 α1b、白介素 - 2 dli

在异基因造血干细胞移植(allo-HSCT)后仍存在 AML1-ETO(ETO)融合基因阳性的患者中,干扰素 α1b 联合白介素 - 2(IL-2) 是临床中探索用于清除微小残留病(MRD)、降低复发风险…

防止接口被薅羊毛(防刷)(DAY 002)

背景:短信验证码接口被不法分子用来做灰产(短信邮箱轰炸机) 如何避免⾃⼰的⽹站成为”⾁鸡“或者被刷? 增加图形验证码(开发⼈员)单IP请求次数限制(开发⼈员) 防刷之图形验证码&…

【RabbitMQ】----RabbitMQ 的7种工作模式

1.Simple(简单模式) P:⽣产者,也就是要发送消息的程序 C:消费者,消息的接收者 Queue:消息队列,图中⻩⾊背景部分.类似⼀个邮箱,可以缓存消息;⽣产者向其中投递消息,消费者从其中取出消息. 特点:⼀个⽣产者P,⼀个消费者C,消息只能被消费⼀次.也称为点对点(Point-to-P…

今日分享:C++ -- list 容器

😎【博客主页:你最爱的小傻瓜】😎 🤔【本文内容:C list容器 😍】🤔 --------------------------------------------------------------------------------------------------------------------…

【Python】数据可视化之分布图

分布图主要用来展示某些现象或数据在地理空间、时间或其他维度上的分布情况。它可以清晰地反映出数据的空间位置、数量、密度等特征,帮助人们更好地理解数据的内在规律和相互关系。 目录 单变量分布 变量关系组图 双变量关系 核密度估计 山脊分布图 单变量分布…

DDD+WebAPI实战

DDD+WebAPI实战 DDD(领域驱动设计,Domain-Driven Design)是一种面向对象的设计方法,它强调将业务逻辑封装在模型中,并通过这些模型来驱动整个应用的设计。在.NET环境中,特别是在使用ASP.NET Core和Web API构建应用时,DDD可以帮助我们更好地组织代码,使得业务逻辑更加清…

人力资源管理的思维方法学习笔记1

北京师范大学政府管理学院1.课程介绍: 讲述视角上,本课程侧重人力资源管理的思维方式,即人力资源管理理论和时间的不同视角和主导范式的分析。这既是对人力资源管理理论发展的凝练,也是对人力资源管理实践演进过程的总结。对于把握…

适应新环境:Trae编辑器下的IDEA快捷键定制

介绍:学习如何在Trae编辑器中配置IntelliJ IDEA风格的快捷键,减少开发环境间的切换成本,提升编码效率。通过安装插件或手动调整,让你更快适应新工具大家好,我是凯哥Java本文标签:代码编辑效率、Trae快捷键、…

基于YOLO8的汽车碰撞事故检测系统【数据集+源码+文章】

基于YOLOv8和Streamlit的汽车碰撞事故检测系统 文末附下载地址 开发目的 随着城市化进程的加快和机动车保有量的持续攀升,道路交通安全问题日益突出,汽车碰撞事故频发不仅严重威胁驾乘人员的生命安全,也对公共秩序、应急响应效率及交通管理…

Unity FARO 测量臂:从零构建实时数字孪生系统

前言:当精准测量遇见实时渲染 在高端制造、质量检测和逆向工程领域,法奥 (FARO) 测量臂是精准的代名词。它能以亚毫米级的精度捕捉现实世界中的三维坐标。现在,想象一下,如果我们将这种精度与 Unity 的强大实时渲染能力结合起来,会发生什么? 我们将得到一个数字孪生 (D…

延迟 队列

概念 延迟队列顾名思义就是消息不立即发送给消费者消费,而是延迟一段时间再交给消费者。 RabbitMQ本身没有直接支持延迟队列的的功能,但是可以通过前面所介绍的TTL死信队列的方式组合 模拟出延迟队列的功能. RabbitMQ 有些版本还支持延迟队列的插件安…

Windows+Docker一键部署CozeStudio私有化,保姆级

在 ​Windows环境​ 下,通过docker,使用 ​火山引擎Doubao-Seed-1.6模型,面向 ​小白新手​ 的 ​Coze Studio私有化部署详细步骤。整个过程分为四大阶段,包含每一步的指令、成功标志。 Coze Studio 私有化部署指南(W…