项目中数据库表中有用到树形结构:
CREATE FUNCTION dgcx(areaId INT)
RETURNS VARCHAR(4000)
BEGIN
#创建变量
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd VARCHAR(4000);
#给变量赋值
SET sTemp='$';
#cast 转换类型 CAST('字段名称' as 转换类型)
SET sTempChd = CAST(areaId AS CHAR);
#CONCAT 字符串拼接 字符串拼接 SELECT CONCAT("MY","SQL",.....) 有多少拼接多少 结果 MYSQL
SET sTemp = CONCAT(sTemp,',',sTempChd);
#查询父id 赋值给 sTEMP;
SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd;
#循环
WHILE sTempChd <> 0 DO
#循环体
SET sTemp = CONCAT(sTemp,',',sTempChd);
SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd;
END WHILE;
#返回结果
RETURN sTemp;
END;
如果报错就看上一篇mysql爬坑
表结构:
DROP TABLE IF EXISTS `t_areainfo`;
CREATE TABLE `t_areainfo` (
`id` int(11) NOT '0' AUTO_INCREMENT,
`level` int(11) DEFAULT '0',
`name` varchar(255) DEFAULT '0',
`parentId` int(11) DEFAULT '0',
`status` int(11) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8;
数据:
INSERT INTO `t_areainfo` VALUES ('1', '0', '中国', '0', '0');
INSERT INTO `t_areainfo` VALUES ('2', '0', '华北区', '1', '0');
INSERT INTO `t_areainfo` VALUES ('3', '0', '华南区', '1', '0');
INSERT INTO `t_areainfo` VALUES ('4', '0', '北京', '2', '0');
INSERT INTO `t_areainfo` VALUES ('5', '0', '海淀区', '4', '0');
INSERT INTO `t_areainfo` VALUES ('6', '0', '丰台区', '4', '0');
INSERT INTO `t_areainfo` VALUES ('7', '0', '朝阳区', '4', '0');
INSERT INTO `t_areainfo` VALUES ('8', '0', '北京XX区1', '4', '0');
INSERT INTO `t_areainfo` VALUES ('9', '0', '北京XX区2', '4', '0');
INSERT INTO `t_areainfo` VALUES ('10', '0', '北京XX区3', '4', '0');
INSERT INTO `t_areainfo` VALUES ('11', '0', '北京XX区4', '4', '0');
INSERT INTO `t_areainfo` VALUES ('12', '0', '北京XX区5', '4', '0');
INSERT INTO `t_areainfo` VALUES ('13', '0', '北京XX区6', '4', '0');
INSERT INTO `t_areainfo` VALUES ('14', '0', '北京XX区7', '4', '0');
INSERT INTO `t_areainfo` VALUES ('15', '0', '北京XX区8', '4', '0');
INSERT INTO `t_areainfo` VALUES ('16', '0', '北京XX区9', '4', '0');
INSERT INTO `t_areainfo` VALUES ('17', '0', '北京XX区10', '4', '0');
运行:
总结:sql的语法还不熟练,欠缺经验