SELECT DISTINCT
@r AS _id,
(SELECT @r := pid FROM sys_resource WHERE id = _id) AS pid
FROM
(SELECT @r := '8a2c25fe-1dfd-4875-b417-2b99e8bff624') vars,
sys_resource
WHERE @r IS not NULL
DROP TABLE IF EXISTS `sys_resource`;
CREATE TABLE sys_resource
(id
varchar(100) NOT NULL,name
varchar(50) DEFAULT NULL COMMENT '资源名称',type
varchar(20) DEFAULT NULL COMMENT '资源类型',priority
int(11) DEFAULT NULL COMMENT '显示顺序',pid
varchar(100) DEFAULT NULL COMMENT '父id',permission
varchar(255) DEFAULT NULL COMMENT '权限字符串',status
varchar(20) DEFAULT NULL COMMENT '是否有效',url
varchar(255) DEFAULT NULL,art_type
varchar(255) DEFAULT NULL,pic
varchar(255) DEFAULT NULL,
PRIMARY KEY (id
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统资源表';
谢谢大家的回答,但是都没有说到根本的问题。那个迭代的查询语句实在是无法理解。
重建sys_resource表的语句。
通过传入的id向上查出父id,然后一级一级查找出所有数据
DROP TABLE IF EXISTS sys_resource
;删除存在的sys_resource表
新建sys_resource表,id varchar(100) NOT NULL,字段名id,varchar类型,长度100,不为空
COMMENT '资源名称' 中文标识,DEFAULT NULL默认允许空
PRIMARY KEY (id) 标识主键
ENGINE=InnoDB 设置引擎
DEFAULT CHARSET=utf8 默认字符utf8