因项目需要,需根据某个商品类别path,查询该类别下的所有子类别

表  goods-categories(path,parent_id,id)

该处使用的表为临时创建的表 t1(id,parent_id,code)

最终成品代码:

DELIMITER //

drop function if exists f1;

create function f1(tableId int)

returns VARCHAR(200)

begin

declare p1 varchar(2000);

declare p2 varchar(200);

declare p3 varchar(200);

declare p4 varchar(200);

set p1 ='';

set p3 ='';

set p4 ='';

set p2 = cast(tableId as char);

while p2 is not null do

set p1 = concat(p1,',',p3);

set p4 = p2;

select group_concat(id) into p2 from t1

where find_in_set(parent_id,p2)>0;

select group_concat(code) into p3 from t1

where find_in_set(parent_id,p4)>0;

end while;

return p1;

end//

【错误1】: 函数结尾使用 end;  报错。

【解决方案】: 使用 DELIMITER //   定义结束符。因为MySQL默认【;】为结束符,但是函数中又避免不了要写sql,所以会提前遇到【;】导致不正常结束。所以定义// 为结束符,这样MySQL就能执行完整的函数结构体,而不是函数的中途的某个分号就执行了。

【错误2】:group_concat 函数使用错误,在sql后面增加了 group by id【其实这个地方使用id就是业务上的错误了】,导致了一次查询会有多条记录,而  select into 参数a  ,返回多条记录时会报错;

【错误3!!!】参数名 使用id ,  create function f1(id int)

导致出现了奇奇怪怪的问题,耗费了我大部分的时间。

【错误4】select group_concat(id) into p2,group_concat(code) into p3 from t1

where find_in_set(parent_id,p2)>0;

不能在 一个select语句里面返回给两个对象,会报语法错误

mysql 结束符报错_【踩坑记录】MySQL 实现自定义递归函数相关推荐

  1. Tray is not a constructor ——electron new Tray报错 『 踩坑记录 』

    是应用找不到已经定义的 let tray , 因为不是在全局定义,而只是局部定义 import { app, ipcMain, BrowserWindow, Menu, Tray } from 'el ...

  2. mysql convert报错_部署mysql版本项目问题记录

    一,com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure报错 将url从jdbc:mysq ...

  3. uc浏览器请求被拦截报跨域踩坑记录

    记录下开发时uc浏览器请求被拦截时遇到的问题 请求在uc浏览器出现跨域问题 app使用uniapp开发,使用plus.runtime.launchApplication来打开并跳转指定页面,并在Xco ...

  4. mysql time_wait报错_[请教] MySQL server has gone away 与 TIME_WAIT 的关系

    在阿里云配置了 MySql(RDS) 的读写分离地址后,在 PHP 中使用该地址进行更新操作时提示如下报错: 1.提示错误 MySQL server has gone away (SQL:xxx) 此 ...

  5. mysql两条记录合成一条数据_踩坑记录之csv数据导入MySQL

    可能采坑的操作 将excel表格转换成csv 逗号分隔,然后notepad检查文件是否是utf8编码,保存. 打开 phpMyAdmin , 选择要导入的表格,然后点击导入: 导入设置 点击执行之后, ...

  6. 【MySQL随手记】一个踩坑记录:在安全更新模式下进行数据的修改与删除

    目录 前言 1 MySQL练习的数据准备 2 Error Code:1175与安全更新模式 2.1 Error Code:1175 2.2 安全更新模式 3  安全更新模式下的update和delet ...

  7. mysql 结束符报错_Mysql手工注入小结

    前言 实习电话面的时候,问到了sql注入的利用,我扒拉扒拉一大堆,结果脑子一抽,说Mysql注入不支持堆叠注入 我学安全目前最后悔的事情就是,最开始入门的时候,连数据库这门课都没开始学,当时连最基本的 ...

  8. mysql floor报错_【学习笔记】MYSQL的floor报错原理分析总结

    网上关于floor报错的文章很多,但都是利用语句,介绍原理的文章大多一笔带过,不过我终于找到一篇像样的原理文章,于是参考着来理解原理,参考的这个链接说的很详细了,但我仍然还有些不明白的地方,所以就研究 ...

  9. npm ERR! code ERR_STREAM_WRITE_AFTER_END npm install 报错实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的

    实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的.由于平时只是用用,并没有深入了解node的npm,所以遇到问题都比较棘手,能够查到的资料也不多.阐述以下我遇 ...

最新文章

  1. 【跃迁之路】【738天】程序员高效学习方法论探索系列(实验阶段495-2019.2.28)...
  2. tuple parameter unpacking is not supported in python3
  3. 我学会了python接下来学什么比较好-我,二本,学会Python后月入上万
  4. svpwm仿真_案例12:三相三线PWM整流仿真建模
  5. 当机械课程设计遇上程序猿2017-12-19
  6. VTK:选择像素用法实战
  7. MYSQL中常用的强制性操作(例如强制索引)
  8. maven+svn+hudson+weblogic构建持续集成环境
  9. 牛客题霸 [ 最长回文子串] C++题解/答案
  10. 一个切图仔的 CSS 笔记
  11. 1022词法分析实验总结
  12. AndroidStudio_安卓原生开发_搭建AdnroidStudio环境并配置SDK---Android原生开发工作笔记136
  13. 在安装mysql出现的错误以及解决方法
  14. KANO 模型——卡诺模型
  15. LeetCode—面试题:移除重复节点(哈希集合)
  16. Web网站模板-健身房宣传响应式网站模板(HTML+CSS+JavaScript)
  17. 手机植入木马可以监视你的一举一动,黑客是怎样入侵别人手机的?
  18. 当健身用户进入直播间:一场全新内容生态的破壁与重建
  19. 今天又get到一个小技能,collect_set函数
  20. 不妥协的全面屏 — 华硕灵耀 Deluxe13 长测

热门文章

  1. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(2月6日-2月12日)
  2. 防范攻击 加强管控 - 数据库安全的16条军规
  3. android 05 桢布局:FrameLayout 网格布据 GridLayout
  4. hibernate dialect 方言 sqlserver2000 的方言
  5. Visual Studio 2012 简体中文 旗舰正式版 ISO 下载
  6. Linux管理文件和目录
  7. Oracle中如何删除重复数据
  8. 还亲力亲为的蜡笔小新
  9. 排行榜上用C++写局域网聊天程序
  10. feiq肆无忌惮欺压同行