Mysql中实现递归查询

一、常规表字段sql

id,pid,lev,namepost

二、sql语句.net

DELIMITER //设计

DROP PROCEDURE IF EXISTS Pro_GetColumnOrg//
CREATE PROCEDURE Pro_GetColumnOrg(IN idd VARCHAR(36))
BEGIN
DECLARE lev INT;
SET lev=1;
DROP TABLE IF EXISTS tmp1;
CREATE TABLE tmp1(ID VARCHAR(36),OrgName VARCHAR(50),ParentID VARCHAR(36) ,levv INT);
INSERT tmp1 SELECT s.id,s.name,s.parent_id,1 FROM `主体表` s WHERE parent_id=idd;
WHILE ROW_COUNT()>0
DO
SET lev=lev+1;
INSERT tmp1 SELECT t.id,t.`name`,t.`parent_id`,lev FROM `主体表` t JOIN tmp1 a ON t.parent_id=a.id AND levv=lev-1;
END WHILE ;
INSERT tmp1 SELECT id,NAME,parent_id,1 FROM `sys_column` WHERE ID=idd;
SELECT * FROM tmp1 ORDER BY levv,ParentID;
END;
//blog

DELIMITER ;get

三、调用it

CALL Pro_GetColumnOrg('e60f43a7e81d46e88e093605e8161e55');

四、备注class

这种表设计之后必定要加个 路径字段 之后就不用这么费事了,直接 like 查询sql语句

五、拓展阅读查询

http://blog.csdn.net/ACMAIN_CHM/article/details/4142971

相关文章
相关标签/搜索