DROP FUNCTION IF EXISTS queryChildrenAreaInfo;
CREATE FUNCTION `queryChildrenAreaInfo` (areaId INT)
RETURNS VARCHAR(4000)
BEGIN
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd VARCHAR(4000);
SET sTemp = '-1';
SET sTempChd = cast(areaId as char);
WHILE sTempChd is not NULL DO
SET sTemp = CONCAT(sTemp,',',sTempChd);
SELECT group_concat(id) INTO sTempChd FROM user where FIND_IN_SET(uid_1,sTempChd)>0;
END WHILE;
return sTemp;
END;
以上text类型可以改成varchar(1000),如果id长度太长,建议使用text
查询如下:
SELECT * FROM user WHERE FIND_IN_SET(id,queryChildrenAreaInfo('2'))