mysql并行查询语句
简介: 在刚刚结束的乌镇世界互联网大会上,阿里云自研POLARDB云原生数据库当选世界互联网领先科技成果。POLARDB既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、自...
2024.11.15在项目中通常有组织架构权限,地区,网站栏目都是树形结构的组织管理方式。在oracle中有相关特定语法可以解决,但是在mysql5中似乎没有相关的功能需要自己用sql实现。
mysql5的实现方式如下:
select id,parent_id
from (
select t1.id,
t1.parent_id,
if(find_in_set(parent_id, @parentId) > 0, @parentId := concat(@parentId, ‘,‘, id), 0) as ischild
from (
select id, parent_id
from sys_organization t
where status = 1
) t1,
(select @parentId := 996) t2 -- 替换为#{parentId}
) t3
where ischild != 0;
自下而上的查询:
select id,parent_id
from (
select t1.id,
t1.parent_id,
if(parent_id is not null and id= @nid , @nid:=parent_id,0) as pid
from (
select id, parent_id
from sys_organization t
where status = 1 order by id desc
) t1,
(select @nid := 996) t2 -- 替换为#{parentId}
) t3
where pid!=0;
以上两种方式我们从sql的语法来看压根算不上是迭代,利用的是mysql的sql语法中的变量逐行赋值的特性,所以以上两个sql的字查询中都要对id的排列顺序有要求的,如果表中父子id大小规律不明确以上sql会失效。这个方式就是全部查询id,再逐行筛选自己的父亲或者儿子。
如果使用的是mysql8版本的mysql
WITH RECURSIVE sys_organization_tree AS (
select id,parent_id FROM sys_organization
WHERE parent_id = 996
UNION
select e.id,e.parent_id FROM sys_organization e INNER JOIN sys_organization_tree s ON e.parent_id = s.id
) select * from sys_organization_tree s
从996开始查询所有子节点的,同样查询上级id也很简单
简介: 在刚刚结束的乌镇世界互联网大会上,阿里云自研POLARDB云原生数据库当选世界互联网领先科技成果。POLARDB既融合了商业数据库稳定可靠、高性能、可扩展的特征,又具有开源云数据库简单开放、自...
2024.11.15上节课给大家介绍了MySQL子查询的基本内容,本节课我们准备给大家介绍MySQL的多表联合查询。大家都知道,MySQL多表联合查询包括内连接、外连接、笛卡尔积连接查询三种。今天我们先重点介绍常用的外连...
2024.11.12一、前言在数据库中执行查询(select)在我们工作中是非常常见的,工作中离不开CRUD,在执行查询(select)时,多表关联也非常常见,我们用的也比较多,那么mysql内部是如何执行关联查询的呢?...
2024.11.15关系型数据库还有一个重要的概念:Join(连接)。使用Join有好处,也会坏处,只有我们明白了其中的原理,才能更多的使用Join。切记不可以:业务之上,再复杂的查询也在一个连表语句中完成。敬而远之,D...
2024.11.12一、概述递归查询是一种在数据库中处理具有层级结构数据的技术。它通过在查询语句中嵌套引用自身,以实现对嵌套数据的查询。递归查询在处理树状结构、父子关系或层级关系的数据时非常有用。在MySQL中,递归查询...
2024.11.15