博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MYSQL级联查询,包括向上向下的级联
阅读量:6714 次
发布时间:2019-06-25

本文共 1608 字,大约阅读时间需要 5 分钟。

hot3.png

-- 名称:mysql递归查询存储过程(2014-04-05) -- 入:@table  表名[varchar(200)]-- 入:@field  要查询返回的字段名(例如:  name,age,remark)[text]-- 入:@order  返回结果的排序(例如 name desc,age asc)[text]-- 入:@idName 主键列名[varchar(200)]-- 入:@pidName父键列名[varchar(200)]-- 入:@id     主键值[varchar(200)],不能为null,如果值是null,说明要查询全部,请自己查询-- 入:@upDown 向上级联还是向下级联,1=上 0=下[int]-- 入:@self   是否包含自己 1=是 0=否[int]-- 返回查询结果集DROP PROCEDURE IF EXISTS Query_Dg;CREATE PROCEDURE Query_Dg(	IN table_   VARCHAR(200),	IN field_   TEXT,	IN order_   TEXT,	IN idName_  VARCHAR(200),	IN pidName_ VARCHAR(200),	IN id_      VARCHAR(200),	IN upDown_  INT,	IN self_    INT)BEGINDECLARE _sqlStr VARCHAR(4000);  -- 动态sqlDECLARE _idParam VARCHAR(4000);  -- id存放的变量DECLARE _idSet VARCHAR(4000);  -- 结果SET @_idSet = '';-- 查询id开始IF(self_ = 1)THEN -- 包含自己    SET @_idSet = id_;END IF;-- 递归开始IF(upDown_ = 1)THEN -- 向上递归    SET @_sql = CONCAT('SELECT ',pidName_,' INTO @_idParam FROM ',table_,' WHERE ',idName_,' = ?');ELSE  -- 向下递归    SET @_sql = CONCAT('SELECT GROUP_CONCAT(',idName_,') INTO @_idParam FROM ',table_,' WHERE FIND_IN_SET(',pidName_,', ?) > 0');END IF;SET @_idParam = id_;    -- 输入参数使用时不能 @PREPARE _sqlStr FROM @_sql;EXECUTE _sqlStr USING @_idParam;WHILE @_idParam IS NOT NULL DO    SET @_idSet = CONCAT(@_idSet,',',@_idParam);    EXECUTE _sqlStr USING @_idParam;END WHILE;-- 查询id结束SET @_sql = CONCAT('SELECT ',field_,' FROM ',table_,' WHERE FIND_IN_SET(',idName_,', ? ) > 0 order by ',order_); -- 查询DEALLOCATE PREPARE _sqlStr; -- 解除预编译PREPARE _sqlStr FROM @_sql; -- 重新预编译EXECUTE _sqlStr USING @_idSet;DEALLOCATE PREPARE _sqlStr;END

 

转载于:https://my.oschina.net/u/178116/blog/684608

你可能感兴趣的文章
《世界是数字的》读后感
查看>>
AD软件原理图封装过程(即由原理图转换到PCB)
查看>>
cocos2d-x lua table与json的转换
查看>>
mysql的基本原理
查看>>
《面向对象分析与设计》——抽象
查看>>
linux学习记录-------jdk安装配置
查看>>
查看dll依赖项
查看>>
koa和egg项目webpack热更新实现
查看>>
ansible普通用户su切换问题
查看>>
2017.10.1
查看>>
P1965 转圈游戏
查看>>
洛谷——P1187 3D模型
查看>>
温度传感器,ds18b20
查看>>
总结从python2.7和python3.0的语法差异
查看>>
PSP(4.13——4.19)以及周记录
查看>>
ecshop为什么删不掉商品分类
查看>>
spark学习笔记
查看>>
bzoj1941[Sdoi2010]Hide and Seek
查看>>
IT兄弟连 Java Web教程 经典面试题2
查看>>
利用setTimeoutc处理javascript ajax请求超时
查看>>