`

sql和mysql递归查询子节点

阅读更多
//SQL SqlServer:CTE函数处理递归(WITH语法)  cte可以其他名字 注意匹配(所有cte全部替换)
with cte as 
 ( 
 select a.typeid,a.superid,a.typename from ctype a where typeid=1
 union all  
 select k.typeid,k.superid,k.typename  from ctype k inner join cte c on c.typeid = k.superid 
 )select * from cte 
//MYSQL 放到命令行执行
CREATE FUNCTION `getChildDeptLst`(rootId INT)
    RETURNS varchar(1000)
    BEGIN
     DECLARE sTemp VARCHAR(1000);
     DECLARE sTempChd VARCHAR(1000);
    
    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 department  where FIND_IN_SET(parentId,sTempChd)>0;
    END WHILE;
  RETURN sTemp;
END

select getChildLst(1);

select * from departmentg   where FIND_IN_SET(id, getChildDeptLst(1));
//
//查询子项父id
SELECT T2.id, T2 .name  FROM (  SELECT   @r AS _id,  (SELECT @r := parentId FROM department WHERE id = _id) AS parentId,  @l := @l + 1 AS lvl  FROM  (SELECT @r := 30, @l := 0) vars,  department h  WHERE @r <> 0) T1  JOIN department T2  ON T1._id = T2.id  ORDER BY T1.lvl DESC 


执行查询或者命令行报错
创建function时

出错信息:

ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)



原因:

这是我们开启了bin-log, 我们就必须指定我们的函数是否是
1 DETERMINISTIC 不确定的
2 NO SQL 没有SQl语句,当然也不会修改数据
3 READS SQL DATA 只是读取数据,当然也不会修改数据
4 MODIFIES SQL DATA 要修改数据
5 CONTAINS SQL 包含了SQL语句

其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。



在MySQL中创建函数时出现这种错误的解决方法:
set global log_bin_trust_function_creators=TRUE;
下面部分摘自
http://hi.baidu.com/alovn/blog/item/590412157d0c0c04972b43ce.html
分享到:
评论

相关推荐

    mysql 递归查找菜单节点的所有子节点的方法

    因此在这里采用类似递归的方法对菜单的所有子节点进行查询。 准备 创建menu表: CREATE TABLE `menu` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单id', `parent_id` int(11) DEFAULT NULL COMMENT '父...

    MySQL递归查询树状表的子节点、父节点具体实现

    简介:mysql5.0.94版本,该版本以及较高级的版本(5.5、6等等)尚未支持循环递归查询,和sqlserver、oracle相比,mysql难于在树状表中层层遍历的子节点。本程序重点参考了下面的资料,写了两个sql存储过程,子节点...

    MySQL通过自定义函数实现递归查询父级ID或者子级ID

    在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度, 那么所有节点为根的树的深度均不会超过树的最大深度,则我们可以直接通过left join来实现。 但很多时候我们是无法控制或者是知道树的深度的...

    根据子节点的金额向上汇总所有父节点的金额

    代码 博文链接:https://blueskylan.iteye.com/blog/848447

    MySQL实现树状所有子节点查询的方法

    本文实例讲述了MySQL实现树状所有子节点查询的方法。分享给大家供大家参考,具体如下: 在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点。但很遗憾,...

    MYSQL无限分类算法文档

    MYSQL无限分类算法技术文档——MYSQL中分层数据的管理,不解MYSQL高级数据管理的相关技巧,包括了一些必要的SQL语句和高级数据管理的讲解,像邻接表模型、检索整树、检索所有叶子节点、检索单一路径、邻接表模型的...

    经典SQL脚本大全

    │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例.sql │ │ 8.2.7 实现删除指定结点及所有子节点的处理触发器.sql ...

    Sqlserver2000经典脚本

    │ 8.2.2 树形数据深度排序处理示例(模拟单编号法).sql │ │ 8.2.2 树形数据深度排序处理示例(递归法).sql │ │ 8.2.3 查找指定节点的所有子节点的示例函数.sql │ │ 8.2.4 查找指定节点的所有父...

    SQL培训第一期

    //递归查询子节点 1.8.7 union 和 union all 1.8.7.1 语法 select * from dual union all select * from dual 1.8.7.2 说明 union 会对查询数据进行去重并排序,union all只是简单的将两个结果合并。 1.8.8 wm_...

    python入门到高级全栈工程师培训 第3期 附课件代码

    04 多表查询之复合查询与子查询 05 mysql之索引 第48章 01 python操作数据库pymysql 02 数据库之事务 03 mysql事务之savepoint 第49章 01 http协议之请求协议 02 http协议之响应协议 03 web框架的概念 04 做一个...

    疯狂JAVA讲义

    8.2.2 从泛型类派生子类 296 8.2.3 并不存在泛型类 298 8.3 类型通配符 298 8.3.1 使用类型通配符 300 8.3.2 设定类型通配符的上限 300 8.3.3 设定类型形参的上限 302 8.4 泛型方法 303 8.4.1 定义泛型方法 ...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    10-27 5 jquery属性操作 获取子元素和兄弟元素的方法 10-27 6 练习题讲解 10-27 7 jquery和ajax整合使用的方法 10-29 1 svn安装及常用操作 10-29 2 svn常用操作 实例讲解1 10-29 3 svn常用操作 实例讲解2 10-29 4 ...

    (全)传智播客PHP就业班视频完整课程

    10-27 5 jquery属性操作 获取子元素和兄弟元素的方法 10-27 6 练习题讲解 10-27 7 jquery和ajax整合使用的方法 10-29 1 svn安装及常用操作 10-29 2 svn常用操作 实例讲解1 10-29 3 svn常用操作 实例讲解2 10-29 4 ...

    史上最全传智播客PHP就业班视频课,8月份视频

    10-27 5 jquery属性操作 获取子元素和兄弟元素的方法 10-27 6 练习题讲解 10-27 7 jquery和ajax整合使用的方法 10-29 1 svn安装及常用操作 10-29 2 svn常用操作 实例讲解1 10-29 3 svn常用操作 实例讲解2 10-29 4 ...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    10-27 5 jquery属性操作 获取子元素和兄弟元素的方法 10-27 6 练习题讲解 10-27 7 jquery和ajax整合使用的方法 10-29 1 svn安装及常用操作 10-29 2 svn常用操作 实例讲解1 10-29 3 svn常用操作 实例讲解2 10-29 4 ...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    10-27 5 jquery属性操作 获取子元素和兄弟元素的方法 10-27 6 练习题讲解 10-27 7 jquery和ajax整合使用的方法 10-29 1 svn安装及常用操作 10-29 2 svn常用操作 实例讲解1 10-29 3 svn常用操作 实例讲解2 10-29 4 ...

    Ubuntu权威指南(2/2)

    5.2.4 递归地列出文件 112 5.3 显示文件内容 113 5.3.1 使用cat命令显示文件 113 5.3.2 使用more命令分页显示 文件 113 5.3.3 使用less命令分页显示 文件 114 5.3.4 使用head命令显示文件 前几行内容 115 5.3.5 使用...

    Ubuntu权威指南(1/2)

    5.2.4 递归地列出文件 112 5.3 显示文件内容 113 5.3.1 使用cat命令显示文件 113 5.3.2 使用more命令分页显示 文件 113 5.3.3 使用less命令分页显示 文件 114 5.3.4 使用head命令显示文件 前几行内容 115 5.3.5 使用...

Global site tag (gtag.js) - Google Analytics