函数代码:
DELIMITER $$
DROP FUNCTION IF EXISTS `getDivisionChildLst`$$
CREATE FUNCTION `getDivisionChildLst`(rootId VARCHAR(40)) RETURNS VARCHAR(20000)
BEGIN
DECLARE sTemp VARCHAR(20000);
DECLARE sTempChd VARCHAR(20000);
SET sTemp = '$';
SET sTempChd = CAST(rootId AS CHAR);
WHILE sTempChd IS NOT NULL DO
SET sTemp = CONCAT(sTemp,',',sTempChd);
SELECT GROUP_CONCAT(id) INTO sTempChd FROM jk_admin_division WHERE FIND_IN_SET(PARENT_ID,sTempChd)>0;
END WHILE;
IF sTemp IS NOT NULL THEN
SET sTemp = SUBSTRING(sTemp,3,LENGTH(sTemp)-1);
END IF;
RETURN sTemp;
END$$
DELIMITER ;
查询函数
select getDivisionChildLst(450000))
结果:450000,450100,450126
查询代码:
SELECT
jk_water_works_init.ID,
jk_water_works_init.NAME,
jk_water_works_init.DIVISION_ID,
jk_water_works_init.WORKS_TYPE_ID,
jk_water_works_init.WATER_SOURCE_ID,
jk_water_works_init.GIVE_SCALE,
jk_water_works_init.GIVE_PERSON_NUM,
jk_water_works_init.SET_TIME,
jk_water_works_init.LOCATION,
jk_water_works_init.LONGITUDE,
jk_water_works_init.LATITUDE,
jk_water_works_init.WORKS_FLAG,
jk_water_works_init.REMARK
FROM jk_water_works_init
where FIND_IN_SET(jk_water_works_init.DIVISION_ID, getDivisionChildLst(450000))
结果:500条,总数2500条,耗时2s,太长了,cpu占用偏高
相关推荐
FIND_IN_SET(str,strlist) 定义 假如字符串str在由多个子链组成的字符串列表strlist中,则返回值的范围在1到N之间。 一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串。 如果第一个参数是一个...
在MySQL数据库中,`FIND_IN_SET()` 和 `IN` 是两种不同的查询方法,它们在处理数据集时有不同的特性和应用场景。本文将对这两种方法进行详细对比,以帮助理解它们之间的差异。 `FIND_IN_SET()` 函数主要用于在一个...
下面两个函数的使用和FIND_IN_SET一样,使用时只需要把FIND_IN_SET换成FIND_PART_IN_SET或FIND_ALL_PART_IN_SET 例如某字段里是为1,2,3,4,5 使用方法: 第一种,传入1,3,6 可以查出来 select * from XXX where FIND...
在上述问题中,可以将原来的`IN`语句替换为`FIND_IN_SET()`,如下所示: ```sql SELECT a.id, a.title, b.idlist, b.aid FROM table a, table2 b WHERE FIND_IN_SET(a.id, b.idlist) AND b.aid = 2; ``` 这样,`...
在本文中,我们将学习如何使用MyBatis来查询数据库中的数据。 创建数据库和数据表 首先,我们需要创建一个名为`springboot`的数据库,并创建一个名为`t_user`的数据表。使用以下SQL语句可以创建数据库和数据表: `...
在 `fluent-mybatis-master` 压缩包中,包含了项目的源码、示例、文档以及构建脚本等资源,开发者可以通过研究这些内容,深入了解如何在实际项目中应用 `fluent-mybatis`,以提升 MyBatis 框架的使用体验。...
在本文中,我们将深入探讨如何在Spring Boot项目中整合MyBatis、JPA,并使用EntityManager进行数据访问。同时,我们还将介绍如何集成Redis缓存服务,以及如何对接微信支付和支付宝支付接口,以实现全面的支付功能。 ...
在IT行业中,MyBatis作为一个流行的Java持久层框架,提供了灵活的数据访问接口,使得开发者能够更方便地操作数据库。在大型项目中,分页查询是必不可少的功能,它可以帮助用户有效地管理大量的数据,避免一次性加载...
mybatis-plus的多表插件完全按照mybats plus的用法来做,支持一对一返回映射,多对多返回映射,自定义返回Vo,自定义表别名,自定义查询字段,你只要会mp,那你就会用mpj,无感引入,不会对之前的业务产生一点点影响...
在上面的例子中,`findAll`方法展示了基本的SQL查询,而`findWithDynamic`方法则使用了动态SQL。当`name`或`age`参数不为空时,相应的条件将被添加到SQL语句中。`#{}`是MyBatis的占位符,用于防止SQL注入。 MyBatis...
在本教程中,我们将探讨如何使用Mybatis Generator以及SQL Server的分页插件。 首先,我们需要了解Mybatis Generator的基本配置。MBG通过一个XML配置文件来定义生成代码的模板和规则。这个配置文件通常命名为`...
当我们需要在SQL语句中动态添加多个条件时,可以使用`<trim>`标签来处理SQL语句中的前缀或后缀问题。 ```xml SELECT * FROM user ,"> != null"> name = #{name}, != null"> age = #{age} ``` ##### ...
在本项目中,我们将探讨如何使用MongoDB进行数据的增删改查操作,以及如何结合前端页面、IntelliJ IDEA开发环境、Thymeleaf模板引擎和MyBatis持久层框架来构建一个完整的应用程序。 首先,让我们深入了解MongoDB的...
在实际开发中,分页和模糊查询是最常用的功能,下面我们将详细介绍MyBatis如何实现分页和模糊查询功能。 一、MyBatis分页实现 MyBatis提供了三种方式来实现分页,每种方式都有其优缺,下面我们将详细介绍每种方式...
在这个例子中,只有当`username`或`email`不为`null`时,相应的SQL条件才会被添加到最终的查询语句中。 #### 、、 这三个元素一起工作,类似于编程语言中的`switch`语句,可以根据不同的条件选择不同的SQL分支。...
在MyBatis中,我们可以使用两种方式来传递Map参数:方式一是使用parameterType="Map"方式,例如: ```xml <update id="publishT00_notice" parameterType="Map"> update test set createdate = #{createdate}, ...
在使用 MyBatis 之前,首先需要在项目中添加 MyBatis 的相关 JAR 包。通常情况下,需要以下三个 JAR 包: - `mybatis-3.0.5-javadoc.jar`:文档包,提供 API 文档。 - `mybatis-3.0.5-sources.jar`:源码包,包含 ...
"Mybatis 中通过注解开启使用二级缓存" Mybatis 是一个基于 Java 的持久层框架,它提供了一个简单易用的方式来访问数据库。二级缓存是 Mybatis 中的一种缓存机制,它可以将查询结果缓存起来,减少数据库的访问次数...