mysql 函数篇(一)

常用的一些函数

FIND_IN_SET(string,StringList)
其中:str 要查询的字符串 strlist 字段名 参数以”,”分隔 如 (1,3,5)
例:
在这里插入图片描述
这是表的设计,此时我们要得到某id下面的一个无限级的集合
此时我们先定义一个获取对应id集合的函数

CREATE FUNCTION `getChildList`(rootId INT) RETURNS varchar(1000) CHARSET utf8mb4
BEGIN
	DECLARE sTemp VARCHAR(1000);
    DECLARE sTempChd VARCHAR(1000);
 
    SET sTemp = '$';
    SET sTempChd =cast(rootId as CHAR);
 
    WHILE sTempChd is not null DO
    	SET sTemp = concat(sTemp,',',sTempChd);
        SELECT group_concat(id) INTO sTempChd FROM  app_activity_type where FIND_IN_SET(pid,sTempChd)>0;
   	END WHILE;
    RETURN sTemp; 
END

关键字段解读


cast(字段名 as 转换的类型 )
此函数的作用是指定类型字段类型的转变


group_concat(字段名)
此函数的作用是返回指定字段的集合并且以逗号隔开


concat(str1,str2,…)
此函数的作用是将多个函数的值进行拼接


sql关键

SELECT group_concat(id) INTO sTempChd FROM  app_activity_type where FIND_IN_SET(pid,sTempChd)>0;

解读

查询app_activity_type表中pid含有 sTempChd值的id集合,并且以逗号隔开的结构存入sTempChd当中
这里的FIND_IN_SET则是查找集合的作用

整体

将得到的集合存入sTemp并且继续递归,直到pid中不再含有sTempChd值时,退出循环

由于该函数返回的字符串,所以我们需要字符串中的id拿出来查询出实际的记录

函数运用:

SELECT * FROM app_activity_type WHERE FIND_IN_SET(id,getChildList (1))

以上便是我对函数的一些自我见解。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值