首页 > 数据库 >SQL小记

SQL小记

时间:2025-01-16 17:23:19浏览次数:1  
标签:name no region content cte subregion SQL 小记

递归查询

MYSQL

  1. 数据schema
create table region
(
    region_no    varchar(4)   not null
        primary key,
    content      varchar(255) not null,
    subregion_no varchar(4)   null
);
  1. 模拟数据
create
    definer = root@`%` procedure create_region_data()
BEGIN
    DECLARE i INT DEFAULT 1;
    WHILE i <= 10 DO
            INSERT INTO region (region_no, content, subregion_no) VALUES (i, CONCAT('region content', i), round(rand(10) * 10));
            SET i = i + 1;
        END WHILE;
END;

3.递归查询region以及下级的region(通过subregion_no)

WITH RECURSIVE cte_name (region_no, content, subregion_no) AS (
    SELECT region_no, content, subregion_no FROM region
                                            where region_no = #{regionNo}
    UNION ALL
    SELECT t.region_no, t.content, t.subregion_no
    FROM region t
    INNER JOIN cte_name ON t.region_no = cte_name.subregion_no
)
SELECT * FROM cte_name;

4.递归查询region以及上级的region(通过subregion_no)

WITH RECURSIVE cte_name (region_no, content, subregion_no) AS (
    SELECT region_no, content, subregion_no FROM region
    where region_no = #{regionNo}
    UNION ALL
    SELECT t.region_no, t.content, t.subregion_no
    FROM region t
             INNER JOIN cte_name ON t.subregion_no = cte_name.region_no
)
SELECT * FROM cte_name;

Oracle

Oracle直接使用start with <初始条件> connect by 递归条件

相关结构化查询详情 Hierarchical Queries

  1. 语法描述: Description of the illustration hierarchical_query_clause
{ CONNECT BY [ NOCYCLE ] condition [ START WITH condition ]
| START WITH condition CONNECT BY [ NOCYCLE ] condition
}
  1. 查本级及下级数据
select region_no
   from region
start with region_no = #{regionNo} 
connect by region_no = prior subregion_no
  1. 查本级及上级数据
select region_no
   from region
start with region_no = #{regionNo} 
connect by prior region_no = subregion_no

标签:name,no,region,content,cte,subregion,SQL,小记
From: https://www.cnblogs.com/newbieking/p/18675170

相关文章

  • 在odoo中,为什么在模型中明明有这个字段值,但是在SQL查询中,却报错:没有这个字段?
    在odoo中为什么在模型中,有的字段,用SQL有的可以查到,有的字段却报错。selectsource_fact_no,confirmation_datefromsale_order_line[42703]ERROR:column"confirmation_date"doesnotexist位置:31这是什么原因,请详解一下。在Odoo中,字段与数据库表之间有一个映射关......
  • sql server 每个表占用大小查询【转】
    SQLServer查看库、表占用空间大小 目录1.查看数据文件占用(权限要求较大)2.查看日志文件占用sqlserver查看所有表大小、所占空间基于T-SQL 转自:https://blog.csdn.net/yenange/article/details/50493580查询数据文件与日志文件占用情况,查看数据大小,查看库大......
  • Java开发防止SQL注入攻击
    在Java编程过程中,防止SQL注入攻击是非常重要的安全措施。以下是常用的防注入攻击措施及其原理:1.使用预编译语句(PreparedStatement)原理:PreparedStatement是JDBC提供的一种接口,它允许SQL语句在执行前被预编译。通过使用占位符?来代替参数值,并在执行时动态设置这些参......
  • 如何在红旗系统安装PGSQL数据库
    红旗系统安装PGSQL教程一、下载pgsql源码二、创建pgsql用户三、创建pgsql目录四、解压源码五、配置构建环境六、编译和安装七、创建数据库目录八、初始化数据库集群九、启动数据库十、添加环境变量十一、连接数据库十二、创建数据库用户十三、外部连接工具访问设置一......
  • flask之 sqlalchemy 高级查询
    1、filter_by写条件 session.query(Users).filter_by(name='lqz').all()2、between、in_session.query(Users).filter(Users.id.between(1,10)).all()ret=session.query(Users).filter(Users.id.in_([1,4,5])).all()3、~非,除...外session.query(Users).fil......
  • MYSQL数据类型
    数据类型结构化数据、例如关系型数据库半结构化数据、HTML、XML、JSON非结构化数据SQL(结构化查询语言)命令关系型数据库擅长处理结构化数据、可以通过结构化查询语言对数据进行CRUD(增删改查)DDL(数据定义语言):主要包含的命令有create、drop、a......
  • GaussDB云原生数据库SQL引擎继承原来openGauss的词法解析,语法解析,查询重写,查询优化和
    云原生数据库SQL引擎继承原来openGauss的词法解析,语法解析,查询重写,查询优化和执行引擎的能力。由于云原生数据库是shareddisk架构,一个事务在一个节点上执行,所以不需要原来分布式根据分布式key进行数据分布,分布式执行和分布式2PC提交的能力。为了支持数据库粒度的异地多活,云原生......
  • MySQL核心揭秘:从查询到修改,彻底理解 Undo Log、Redo Log、Binlog 与 ACID 的关系【转
    1前言在当今数据驱动的时代,数据库系统作为信息存储和管理的核心组件,其性能和可靠性直接影响着应用的稳定性和用户体验。MySQL,作为最流行的开源关系型数据库管理系统之一,被广泛应用于各类互联网应用中。然而,许多开发者和数据库管理员对其内部机制知之甚少,特别是在事务处理和日......
  • 东软云医院HIS系统-药房管理系统【Swing窗口+MySQL】(Java课设)
         客官进来看一眼呗,有惊喜!【帮你解决烦恼】:Java课设和计Java毕设太难不会做怎么办?系统类型Swing窗口类型+Mysql数据库存储数据使用范围适合作为Java课设!!!部署环境jdk1.8+Mysql8.0+Idea或eclipse+jdbc运行效果本系统源码地址:东软云医院HIS系统-药房管理系统【Sw......
  • Cyber Security 101-Offensive Security-SQLMap: The Basics(sqlmap基础)
    了解SQL注入并通过SQLMap工具利用此漏洞。任务1:介绍SQL 注入是一个普遍存在的漏洞,长期以来一直是热门网络安全主题。要了解这个漏洞,我们必须首先了解什么是数据库以及网站如何与数据库交互。数据库是可以存储、修改和检索。它将来自多个应用程序的数据存储在结构化......