目录

1、背景

2、创建函数queryAllParentIds(inputId VARCHAR(32))

2.1、创建函数

2.2、函数测试

2.3、结果验证

3、创建函数queryLongName(inputId VARCHAR(32))

3.1 创建函数

3.2 函数验证


1、背景

现在有一张行政区表,表结构如下:

CREATE TABLE `t_addr` (`id` varchar(255) NOT NULL,`name` varchar(255) DEFAULT NULL,`p_id` varchar(255) DEFAULT NULL,`addr_level` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

需求如下:根据知道某一个指定的Id所有的上级信息

2、创建函数queryAllParentIds(inputId VARCHAR(32))

2.1、创建函数

DROP FUNCTION IF EXISTS queryAllParentIds;
DELIMITER;;
CREATE FUNCTION queryAllParentIds(inputId VARCHAR(32))
RETURNS VARCHAR(4000)
BEGIN
DECLARE allParentIds VARCHAR(4000);
DECLARE tempParentId VARCHAR(32);
DECLARE tempId VARCHAR(32);
SET tempId = inputId;
SET allParentIds = '\'$\'';
SELECT p_id INTO tempParentId FROM t_addr WHERE id = tempId limit 1;WHILE tempParentId <> '0' DOSET allParentIds = CONCAT(allParentIds,',','\'',tempParentId,'\'');SELECT p_id INTO tempParentId  FROM t_addr WHERE id = tempParentId;
END WHILE;RETURN allParentIds;
END
;;
DELIMITER ;

2.2、函数测试

2.3、结果验证

3、创建函数queryLongName(inputId VARCHAR(32))

3.1 创建函数

DROP FUNCTION IF EXISTS queryLongName;
DELIMITER;;
CREATE FUNCTION queryLongName(inputId VARCHAR(32))
RETURNS VARCHAR(4000)
BEGIN
DECLARE longName VARCHAR(4000);
DECLARE tempParentId VARCHAR(32);
DECLARE tempName VARCHAR(32);
DECLARE tempId VARCHAR(32);
SET tempId = inputId;SELECT p_id,name into @tempParentId,@tempName FROM t_addr WHERE id = tempId limit 1;SET longName = @tempName;
WHILE @tempParentId <> '0' DOSELECT p_id,name  into @tempParentId,@tempName FROM t_addr WHERE id = @tempParentId;SET longName = CONCAT(@tempName,'->',longName );
END WHILE;RETURN longName;
END
;;
DELIMITER ;

3.2 函数验证

mysql数据库递归访问数据相关推荐

  1. mye连接mysql数据库_MySQL_如何在Java程序中访问mysql数据库中的数据并进行简单的操作,在上篇文章给大家介绍了Myeclip - phpStudy...

    如何在Java程序中访问mysql数据库中的数据并进行简单的操作 在上篇文章给大家介绍了Myeclipse连接mysql数据库的方法,通过本文给大家介绍如何在Java程序中访问mysql数据库中的数据 ...

  2. MySQL数据库- 几种数据迁移的方法详解都在这了!看完必懂

    数据迁移的几种方式 - MySQL数据库 本文关键字:MySQL.数据库.数据迁移.导入.导出 文章目录 数据迁移的几种方式 - MySQL数据库 一.数据迁移 1. 数据的生命周期 2. 数据迁移的 ...

  3. 基于C API的MySQL数据库多线程访问方法

    说明:如何生成线程式客户端 客户端库总是线程安全的.最大的问题在于从套接字读取的net.c中的子程序并不是中断安全的.或许你可能希望用自己的告警中断对服务器的长时间读取,以此来解决问题.如果为SIGP ...

  4. java查询mysql装载bean_jsp与javabean链接mysql数据库并查询数据表的简单实例源码

    jsp与javabean链接mysql数据库并查询数据表的简单实例源码.这个简单的实例是给新手学习的,或者一些高手临时忘记怎么使用jsp操作mysql数据库时候查找的,包括了建立mysql数据库连接的 ...

  5. php 查看mysql连接数据库_php基础之连接mysql数据库和查询数据

    php基础之连接mysql数据库和查询数据 文章主要介绍了php连接mysql数据库和查询数据的方法和示例,需要的朋友可以参考下,就跟随百分网小编一起去了解下吧,想了解更多相关信息请持续关注我们应届毕 ...

  6. mysql数据库千万级别数据的查询优化和分页测试

    原文地址:原创 mysql数据库千万级别数据的查询优化和分页测试作者:于堡舰  本文为本人最近利用几个小时才分析总结出的原创文章,希望大家转载,但是要注明出处  http://blog.sina.co ...

  7. python链接mysql 判断是否成功_python连接mysql数据库并读取数据的实现

    1.安装pymysql包 pip install pymysql 注: MySQLdb只支持python2,pymysql支持python3 2.连接数据 import pymysql import ...

  8. 根据mysql数据库日志恢复删除数据

    根据mysql数据库日志恢复删除数据 BINLOG就是一个记录SQL语句的过程,和普通的LOG一样.不过只是她是二进制存储,普通的是十进制存储罢了. 1.配置文件里要写的东西: [mysqld] lo ...

  9. php显示mysql数据实例_php 连接mysql数据库并显示数据 实例 转载 aoguren

    PHP连接MySQL数据库并显示数据//---------基本设定---------$mysql_server_name = "localhost";//服务器名称:$mysql_ ...

最新文章

  1. OpenCV Shi-Tomasi角点检测
  2. Java多线程(二):Callable和FutureTask结合使用获取返回值
  3. EduCoder Linux之文件/目录搜索
  4. Ubuntu下 Hadoop 1.2.1 配置安装
  5. LeetCode 223. 矩形面积
  6. Disney牵手联想发布AR头显,还有配备激光剑的AR游戏《星球大战》
  7. thymeleaf表达式优先级及表达式简单说明
  8. python函数求n年后本息_Python自定义函数计算给定日期是该年第几天的方法示例...
  9. acWing 1296 聪明的燕姿
  10. 【LA 2572】Viva Confetti(圆与圆弧覆盖+精度问题)
  11. [译]ASP.NET Core 2.0 全局配置项
  12. LHDC、AAC、aptx、ldac、wha哪个更好,各有什么优缺点?
  13. 鲲鹏920是计算机CPU吗,华为鲲鹏920
  14. ERP已死,云计算上位
  15. DDoS防御选高防IP还是高防CDN?
  16. (书摘)牛奶可乐经济学之机会成本
  17. 原画学习需要具备什么条件
  18. FCS2022-04-software
  19. wps怎么添加附录_如何在word尾注后添加附录、成果等其他内容
  20. JDBC常见面试题(修订版)

热门文章

  1. 计算机中的同步和异步
  2. 节日营销方案:你值得关注的6个策略!
  3. html向服务器发送请求有哪些方法,HTTP协议客户端是如何向服务器发送请求
  4. C语言口求整除x与y的余数,取余或取模运算小结
  5. 【项目实战】Java POI之Word导出经典案例一
  6. 电脑如何截长图?如何用电脑截取长图——规划全景
  7. Centos中的storm集群环境搭建
  8. d盘格式化后怎么恢复
  9. 笔记:《高效能人士的七个习惯》第九章 习惯六 统合综效——创造性合作的原则
  10. 解决Visio用直线手画的形状不能填充问题