相关文章推荐
干练的甜瓜  ·  javax.management.Insta ...·  1 年前    · 
月球上的莲藕  ·  vba split 回车-掘金·  1 年前    · 

表 POI 有 字段 Title CityID

表City 有字段 ID Title ParentCityID(归属City)

求当 烟台下的所有PoiTitle (包含烟台下的子城市中的PoiTitle)

第一步先查询 烟台下所有城市(PCityId指向烟台) CTE

with cte_child(id,title,ParentCityId) as (select id,title,ParentCityId from CMSCity where Title=‘烟台’ union all select a.id,a.title,a.ParentCityId from CMSCity a
inner join cte_child b on ( a.ParentCityId=b.id)) select * from cte_child
在这里插入图片描述
第二步操作 poi
修改后sql为:
with cte_child(id,title,ParentCityId) as (select id,title,ParentCityId from CMSCity where Title=‘烟台’ union all select a.id,a.title,a.ParentCityId from CMSCity a
inner join cte_child b on ( a.ParentCityId=b.id)) select CMSPois.CityId,CMSPois.Title from CMSPois inner join cte_child on CMSPois.CityId =cte_child.id
在这里插入图片描述

表 POI 有 字段 Title CityID表City 有字段 ID Title ParentCityID(归属City)求当 烟台下的所有PoiTitle (包含烟台下的子城市中的PoiTitle)第一步先查询 烟台下所有城市(PCityId指向烟台) CTEwith cte_child(id,title,ParentCityId) as (select id,title,ParentCityId from CMSCity where Title=‘烟台’ union all
基本上在每个系统中都有那么几张表是自关联父子关系的结构。往往有很多人都是使用pid来做关联。在刚进入IT行业时使用CAKEPHP框架编写WEB的时候,使用它里面的一个ACL plugin实现权限管理的时候。发现一个表结构硬是不明白是怎么回事。具体表结构如下: CREATE TABLE acos ( id INTEGER(10) UNSIGNED NOT NULL AUTO_INCREMENT, parent_id INTEGER(10) DEFAULT NULL, model VARCHAR(255) DEFAULT '', foreign_key INTEGER(10) UNSIG
bankid level name head name 00017 1 中国银行河南省分行 00001 中国银行河南省分行 10951 2 中国银行郑州自贸区分行 00017 中国银行郑州自贸区分行 10952 3 中国银行郑州行政区支行 10951 中国银行郑州行政区支行 10953 3 中国
文章目录1. 动态 sql OGNL表达式1.1 If 标签1.2 5.2. Where标签1.3 Sql 片段1.4 foreach标签1.5 set 标签1.6 choose(when,otherwise)2. 关联 查询 2.1 一对一 查询 2.1.2 方法一:使用resultType2.1.2 方法二:使用resultMap2.2 一对多 查询 3. 级联 查询 3.1 一对一 查询 3.2 一对多 查询 1. 动态 sql OGNL表达式 OGNL 表达式,是一种开源的表达式语言,Mybatis的动态 SQL 就是基于
工作中遇到这样一个需求: 部门分为三层,从上往下依次是:一级部门、二级部门、三级部门,要求用户搜索三级部门的名称,然后返回该三级部门,以及它所在的一级部门和二级部门。如下图所示: 这个需求的实现很简单:先 查询 出三级部门,再分别 查询 它所在的二级部门、一级部门,就可以得到前端所需的结果。 但是在 Code Review 时,组长提出了一个问题:如果部门等级更深了,比如增加到5级、10级,这个实现方式是不是要 查询 5次、10次?这个时候该怎么实现? 这样,问题就变成了一个 My SQL 多级 查询 的问题,与前面
with 自定义结果名称(Id,Name,Pid) as (   select Id,Name,Pid from 要 查询 的表名称where Id ='' --顶级的 查询 条件,要 查询 哪个父级的所有子级,条件就写哪个   union all   select 要 查询 的表名称.Id,要 查询 的表名称.Name,要 查询 的表名称.Pid from 要 查询 的表名称,自定义结果名称 where 要 查询 的表名称.Pid = 自定义结果名称.Id select * from 自定义结果名称; Id,Name,Pid ..
我们在项目开发过程,经常会遇到有文章分类分栏,菜单分类,视频分类等 多级 分类 那么这种 多级 分类我们在数据中又是如何设计的呢?在mybatis 查询 过程中又是如何 多级 查询 的呢? 别着急,今年我们来解决这个需求, 当然,解决的方法有很多,这里我只介绍我自己使用的一种,有更好的方法可以评论区评论大家一起探讨 本次用到了 `Maven工程`、`Swagger`、`RESTful接口风格`、`MyBatis-Plus`
sql server父子递归 查询 指的是在一张表中,通过某一列的父子关系建立递归 查询 ,以获取某一节点的所有子孙节点或所有祖先节点的一种 查询 方式。一般情况下,父子递归 查询 需要使用到 sql server中的 CTE (通用表达式)功能。 在进行父子递归 查询 时,需要先确定递归关系所依赖的列名,并对其进行命名。然后,通过WITH关键字,定义一个 CTE 来连接包含父子关系的表,并给其取一个别名。接着,在该 CTE 中使用递归 查询 语句,以获取所需的结果。 递归 查询 语句需要包含以下几个部分:首先是递归结束条件,用来终止递归的过程;其次是递归体,用来确定递归下一步所需要获取的数据;最后是 查询 语句,用来获取最终需要的结果。 在递归 查询 中,为了能够判断某一节点是否为叶子节点或根节点,可以使用CASE语句进行判断。如果在 查询 中需要对结果进行排序,可以使用ORDER BY关键字,指定排序规则。 需要注意的是,在进行父子递归 查询 时,需要考虑性能问题。如果表中记录非常多,递归的过程也会比较复杂,可能会导致 查询 时间变得非常长。因此,在实际应用中,需要根据具体情况进行优化,例如在表中添加索引等。