当前位置: 首页 > news >正文

MySQL WITH AS及递归查询

MySQL WITH AS及递归查询

WITH AS

官网:WITH 是 SQL 中的一个关键字,用于创建临时表达式(也称为 Common Table Expression,CTE),它允许你在一个查询中临时定义一个表达式,然后在后续的查询中引用它。

理解:当我们使用WITH AS 他会帮我们创建一个临时的表,这个临时表只在本次SQL中生效。当我们使用这个临时表二次以上时,他的效率是会比我们原本写两个一模一样的子查询是要搞的。

语法

WITH cte_name (column_name1, column_name2, ...) AS (-- CTE 查询SELECT ...FROM ...WHERE ...
)
-- 主查询
SELECT ...
FROM cte_name
WHERE ...

实例

WITH UserNoDisable as (-- 查询出用户表中disable为0的数据select * from User where disable = 0
)
select Stu.*,UserNoDisable.Extra from Stu Join UserNoDisable on Stu.Id = UserNoDisable.Id
union all
select Tea.*,UserNoDisable.Extra from Tea Join UserNoDisable on Stu.Id = UUserNoDisableser.Id;
-- 通过临时表可以使用我们的SQL,变得更简洁,原本需要写两次子查询的可以替换为去查临时表这也大大的提供了我们的性能。

注意:临时表一次可以建多个。

WITH tab1 as(...),tab2 as(...) select ....

递归运算(WITH RECURSIVE AS)

在临时表的基础上添加RECURSIVE 来达到递归运算。

with RECURSIVE  tab1(n) as (-- 这里是初始条件select 1-- 使用递归需要加上UNION ALL 关键字union all-- 这里是递归查询 按什么样的规则输出值,每一次递归都会将前一次的查询结果做为输入,直到查询的结果集为空时,停止递归select n+1 from tab1 where n < 10
)
select * from tab1;结果
|n |
|1 | -- 1.初始条件结果
|2 | -- 2.拿初始条件的结果,按递归查询的规则执行一次
|3 | -- .... 那上一次的
|4 |
|5 |
|6 |
|7 |
|8 |
|9 |
|10| -- 查到这里后下一次查询结果为空了,则停止递归。

递归查询使用 WITH RECURSIVE 关键字结合递归公共表达式(RCTE)来实现。它的执行顺序可以分为以下几步:

  1. 初始查询
    • 首先执行递归查询的初始部分,也就是非递归的部分,这部分的结果作为递归查询的起点。
  2. 递归查询
    • 接着执行递归部分,这部分会基于初始查询的结果逐步地进行迭代。每次迭代会将前一次迭代的结果作为输入,然后应用递归规则。
  3. 递归终止条件
    • 在递归查询的过程中,必须定义一个终止条件(要不然就是死循环),当满足终止条件时,递归将停止。
  4. 合并结果
    • 将递归查询的结果与初始查询的结果进行合并,得到最终的查询结果。

总结来说,递归查询首先执行一个初始查询,然后基于初始查询的结果进行递归迭代,直到满足了设定的终止条件为止。最终,将递归查询的结果与初始查询的结果合并,得到最终的查询结果。

需要注意的是,在编写递归查询时,一定要谨慎地定义好递归规则和终止条件,以避免无限循环或者递归层级过深导致的性能问题。

相关文章:

MySQL WITH AS及递归查询

MySQL WITH AS及递归查询 WITH AS 官网&#xff1a;WITH 是 SQL 中的一个关键字&#xff0c;用于创建临时表达式&#xff08;也称为 Common Table Expression&#xff0c;CTE&#xff09;&#xff0c;它允许你在一个查询中临时定义一个表达式&#xff0c;然后在后续的查询中引…...

Harbor私有镜像仓库搭建

本文基于&#xff1a;https://zhuanlan.zhihu.com/p/143779176 1.环境准备 IP&#xff1a;192.168.10.136/24 操作系统:centos7 2.安装Docker、Docker-compose 2.1安装Docker-CE $ wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.re…...

线段树 区间赋值 + 区间加减 + 求区间最值

线段树好题&#xff1a;P1253 扶苏的问题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 区间赋值 区间加减 求区间最大。 对于区间赋值和区间加减来说&#xff0c;需要两个懒标记&#xff0c;一个表示赋值cover&#xff0c;一个表示加减add。 区间赋值的优先级大于区间加…...

大模型之十九-对话机器人

大语言模型的最早应用是Chatbot&#xff0c;其实我最早接触语义理解在2014年&#xff0c;2014年做智能音箱的时候&#xff0c;那时也是国内第一批做智能音箱的&#xff0c;在现在看起来当时的智能音箱比较傻&#xff0c;很多问题无法回答&#xff0c;长下文效果也不好&#xff…...

『力扣刷题本』:删除排序链表中的重复元素

一、题目 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,1,2] 输出&#xff1a;[1,2]示例 2&#xff1a; 输入&#xff1a;head [1,1,2,3,3] 输出&am…...

Android S从桌面点击图标启动APP流程 (六)

系列文章 Android S从桌面点击图标启动APP流程 (一)Android S从桌面点击图标启动APP流程 (二) Android S从桌面点击图标启动APP流程 (三) Android S从桌面点击图标启动APP流程 (四) Android S从桌面点击图标启动APP流程 (五) Android 12的源码链接&#xff1a; android 1…...

Java I/O (输入/输出)

1.流的概念 流是一种有序的数据序列&#xff0c;根据操作类型&#xff0c;可以分为输入流和输出流两种。I/O流&#xff08;输入输出&#xff09;提供了一条通道程序&#xff0c;可以使用这条通道把源中的字节序列送到目的地。 1.1 输入流&#xff1a; 程序从指向源的输入流中读…...

nodejs+vue食力派网上订餐系统-计算机毕业设计

采用当前流行的B/S模式以及3层架构的设计思想通过 技术来开发此系统的目的是建立一个配合网络环境的食力派网上订餐系统&#xff0c;这样可以有效地解决食力派网上订餐管理信息混乱的局面。 本设计旨在提高顾客就餐效率、优化餐厅管理、提高订单准确性和客户的满意度。本系统采…...

【计算机视觉】对极几何

文章目录 一、极线约束&#xff08;Epipolar Constraint&#xff09;二、相机标定过的情况三、相机没有标定过的情况四、八点算法&#xff08;eight-point algorithm&#xff09; 我的《计算机视觉》系列参考UC Berkeley的CS180课程&#xff0c;PPT可以在课程主页看到。 在上一…...

强大易于编辑的流程图组织图绘制工具draw.io Mac苹果中文版

draw.io可以绘制多种类型的图表&#xff0c;包括但不限于流程图、组织结构图、网络图、UML图、电气工程图等。draw.io提供了丰富的图形元素和编辑功能&#xff0c;使用户能够轻松地创建和编辑各种复杂的图表。同时&#xff0c;该软件还支持多种导出格式&#xff0c;方便用户在不…...

c# .net6 在线条码打印基于

条码打印基于:BarTender、ORM EF架构 UI展示&#xff1a; 主页代码&#xff1a; using NPOI.OpenXmlFormats.Spreadsheet; using ServerSide.Models; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawi…...

Hive SQL的编译过程

1.MapReduce实现基本SQL操作的原理 详细讲解SQL编译为MapReduce之前,我们先来看看MapReduce框架实现SQL基本操作的原理 1.1 Join的实现原理 select u.name, o.orderid from order o join user u on o.uid = u.uid; 在map的输出value中为不同表的数据打上tag标记,在reduce阶段…...

[架构之路-245/创业之路-76]:目标系统 - 纵向分层 - 企业信息化的呈现形态:常见企业信息化软件系统 - 企业资源管理计划ERP

目录 前言&#xff1a; 一、企业信息化的结果&#xff1a;常见企业信息化软件 1.1 企业资源管理计划 1.1.1 什么是ERP&#xff1a;企业最常用的信息管理系统 1.1.2 ERP的演进过程 1.1.3 EPR模块 1.1.4 EPR五个层级 1.1.5 企业EPR业务总体流程图 1.1.6 什么类型的企业需…...

数据库简史:多主数据库架构的由来和华为参天引擎的机遇

注&#xff1a;本文发表后&#xff0c;收到了很多后台反馈&#xff0c;其中关于大型机的早期成就不容省略。微调重发本文&#xff0c;纯属个人观点&#xff0c;错谬之处&#xff0c;仍然期待指正。 2023年10月13日&#xff0c;在北京举办的“2023金融业数据库技术大会"上&…...

C语言每日一练(二)

单链表经典算法专题 一、 单链表相关经典算法OJ题1&#xff1a;移除链表元素 解法一&#xff1a;在原链表中删除Node.nextnext的节点 typedef struct ListNode ListNode; struct ListNode* removeElements( ListNode* head, int val) {ListNode* pcur head;ListNode* pre h…...

HashJoin 在 Apache Arrow 和PostgreSQL 中的实现

文章目录 背景PostgreSQL HashJoin实现PG 执行器架构HashJoin 基本流程HashJoin 实现细节Join 类型HashJoin 的划分阶段HashJoin 的分批处理阶段JOIN 类型的状态机转换HashJoin 的投影和过滤 Arrow Acero HashJoin实现Acero 基本框架HashJoin 基本流程 总结 背景 近两个月转到…...

FL Studio21.2.0.3421最新汉化破解版中文解锁下载完整版本

音乐在人们心中的地位日益增高&#xff0c;近几年音乐选秀的节目更是层出不穷&#xff0c;喜爱音乐&#xff0c;创作音乐的朋友们也是越来越多&#xff0c;音乐的类型有很多&#xff0c;好比古典&#xff0c;流行&#xff0c;摇滚等等。对新手友好程度基本上在首位&#xff0c;…...

docker在java项目中打成tar包

docker在java项目中打成tar包 1、首先安装一个docker desktop 2、mvn install项目后&#xff0c;建立一个自己的dockerfile 这里我以我的代码举例&#xff0c;from 镜像&#xff0c;这里你也能打包好一个镜像的基础上&#xff0c;from打好的镜像&#xff0c;这里我们用openj…...

No175.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...

【网安AIGC专题10.19】论文6:Java漏洞自动修复+数据集 VJBench+大语言模型、APR技术+代码转换方法+LLM和DL-APR模型的挑战与机会

How Effective Are Neural Networks for Fixing Security Vulnerabilities 写在最前面摘要贡献发现 介绍背景&#xff1a;漏洞修复需求和Java漏洞修复方向动机方法贡献 数据集先前的数据集和Java漏洞Benchmark数据集扩展要求数据处理工作最终数据集 VJBenchVJBench 与 Vul4J 的…...

AI 不锈钢保温杯智能功率 MOSFET 完整选型方案

2026年随着 AI 技术在智能保温杯领域的深度渗透&#xff08;如精准温控、语音交互、健康监测、无线充电管理&#xff09;&#xff0c;对功率 MOSFET 提出更高要求&#xff1a;高集成度、低功耗、小封装、高可靠性。微碧半导体&#xff08;VBsemi&#xff09;基于 SGT 及 Trench…...

KaTrain围棋AI训练终极指南:5步从入门到精通

KaTrain围棋AI训练终极指南&#xff1a;5步从入门到精通 【免费下载链接】katrain Improve your Baduk skills by training with KataGo! 项目地址: https://gitcode.com/gh_mirrors/ka/katrain 想要快速提升围棋水平却找不到合适的训练方法&#xff1f;KaTrain作为一款…...

长期使用 Taotoken Token Plan 套餐在成本控制方面的实际感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用 Taotoken Token Plan 套餐在成本控制方面的实际感受 1. 从按需付费到计划订阅的转变 最初接触 Taotoken 时&#xff0c;…...

终极直播输入可视化指南:如何用开源工具展示键盘鼠标操作

终极直播输入可视化指南&#xff1a;如何用开源工具展示键盘鼠标操作 【免费下载链接】input-overlay Show keyboard, gamepad and mouse input on stream 项目地址: https://gitcode.com/gh_mirrors/in/input-overlay 在游戏直播、教学演示或技术分享中&#xff0c;观众…...

10个Tunasync配置技巧:从基础到高级应用

10个Tunasync配置技巧&#xff1a;从基础到高级应用 【免费下载链接】tunasync Mirror job management tool. 项目地址: https://gitcode.com/gh_mirrors/tu/tunasync Tunasync 是一款强大的镜像作业管理工具&#xff0c;能够帮助用户轻松配置和管理各种镜像同步任务。…...

马来文语音合成效果差?3步诊断法+5个权威音素校准参数,立竿见影提升自然度与语调准确率

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;马来文语音合成效果差&#xff1f;3步诊断法5个权威音素校准参数&#xff0c;立竿见影提升自然度与语调准确率 马来文&#xff08;Bahasa Melayu&#xff09;语音合成常因音素切分模糊、重音规则缺失及语调建…...

视频高清直播点播/音视频点播/云点播/云直播EasyDSS交互升级解锁大型活动直播新体验

在数字化时代&#xff0c;大型活动直播已从“可选”变为“必需”&#xff0c;无论是政企发布会、行业峰会&#xff0c;还是跨区域学术论坛&#xff0c;都需要一套兼顾稳定、安全与高效的直播解决方案。EasyDSS私有化视频会议系统凭借高并发、低延迟的核心优势站稳市场&#xff…...

Rust 核心理论: 高并发与异步(三)

写在前面 Rust 凭借其独特的所有权机制和借用检查器&#xff0c;在不依赖垃圾回收的前提下&#xff0c;实现了内存安全与线程安全的编译期保证。 然而&#xff0c;对于许多从 C/C、Java、Python 等背景转入 Rust 的开发者而言&#xff0c;所有权、生命周期、借用规则、内部可变…...

N8N + Cherry Studio 本地大模型对接|全踩坑保姆级指南(Docker 版)

标签&#xff1a;#N8N #CherryStudio #本地大模型 #AI自动化 #避坑指南 摘要&#xff1a;本文完整记录 Docker 部署的 N8N 对接 Cherry Studio 本地中转服务&#xff0c;从网络连通、接口鉴权、节点选型、模型命名等多维度&#xff0c;整理所有报错原因与可直接复制的解决方案&…...

用USRP B200mini和GNU Radio抓取大疆无人机位置:一个极客的无线安全实验手记

极客实验室&#xff1a;用USRP B200mini破解无人机通信协议实战指南 从零开始的SDR探险 去年夏天的一个傍晚&#xff0c;我在阳台上调试天线时&#xff0c;突然注意到头顶频繁掠过的无人机。这些飞行器究竟在传输什么数据&#xff1f;这个偶然的观察引发了我长达三个月的技术…...