mysql 结束符报错_【踩坑记录】MySQL 实现自定义递归函数
因项目需要,需根据某个商品类别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 实现自定义递归函数相关推荐
- Tray is not a constructor ——electron new Tray报错 『 踩坑记录 』
是应用找不到已经定义的 let tray , 因为不是在全局定义,而只是局部定义 import { app, ipcMain, BrowserWindow, Menu, Tray } from 'el ...
- mysql convert报错_部署mysql版本项目问题记录
一,com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure报错 将url从jdbc:mysq ...
- uc浏览器请求被拦截报跨域踩坑记录
记录下开发时uc浏览器请求被拦截时遇到的问题 请求在uc浏览器出现跨域问题 app使用uniapp开发,使用plus.runtime.launchApplication来打开并跳转指定页面,并在Xco ...
- mysql time_wait报错_[请教] MySQL server has gone away 与 TIME_WAIT 的关系
在阿里云配置了 MySql(RDS) 的读写分离地址后,在 PHP 中使用该地址进行更新操作时提示如下报错: 1.提示错误 MySQL server has gone away (SQL:xxx) 此 ...
- mysql两条记录合成一条数据_踩坑记录之csv数据导入MySQL
可能采坑的操作 将excel表格转换成csv 逗号分隔,然后notepad检查文件是否是utf8编码,保存. 打开 phpMyAdmin , 选择要导入的表格,然后点击导入: 导入设置 点击执行之后, ...
- 【MySQL随手记】一个踩坑记录:在安全更新模式下进行数据的修改与删除
目录 前言 1 MySQL练习的数据准备 2 Error Code:1175与安全更新模式 2.1 Error Code:1175 2.2 安全更新模式 3 安全更新模式下的update和delet ...
- mysql 结束符报错_Mysql手工注入小结
前言 实习电话面的时候,问到了sql注入的利用,我扒拉扒拉一大堆,结果脑子一抽,说Mysql注入不支持堆叠注入 我学安全目前最后悔的事情就是,最开始入门的时候,连数据库这门课都没开始学,当时连最基本的 ...
- mysql floor报错_【学习笔记】MYSQL的floor报错原理分析总结
网上关于floor报错的文章很多,但都是利用语句,介绍原理的文章大多一笔带过,不过我终于找到一篇像样的原理文章,于是参考着来理解原理,参考的这个链接说的很详细了,但我仍然还有些不明白的地方,所以就研究 ...
- npm ERR! code ERR_STREAM_WRITE_AFTER_END npm install 报错实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的
实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的.由于平时只是用用,并没有深入了解node的npm,所以遇到问题都比较棘手,能够查到的资料也不多.阐述以下我遇 ...
最新文章
- 【跃迁之路】【738天】程序员高效学习方法论探索系列(实验阶段495-2019.2.28)...
- tuple parameter unpacking is not supported in python3
- 我学会了python接下来学什么比较好-我,二本,学会Python后月入上万
- svpwm仿真_案例12:三相三线PWM整流仿真建模
- 当机械课程设计遇上程序猿2017-12-19
- VTK:选择像素用法实战
- MYSQL中常用的强制性操作(例如强制索引)
- maven+svn+hudson+weblogic构建持续集成环境
- 牛客题霸 [ 最长回文子串] C++题解/答案
- 一个切图仔的 CSS 笔记
- 1022词法分析实验总结
- AndroidStudio_安卓原生开发_搭建AdnroidStudio环境并配置SDK---Android原生开发工作笔记136
- 在安装mysql出现的错误以及解决方法
- KANO 模型——卡诺模型
- LeetCode—面试题:移除重复节点(哈希集合)
- Web网站模板-健身房宣传响应式网站模板(HTML+CSS+JavaScript)
- 手机植入木马可以监视你的一举一动,黑客是怎样入侵别人手机的?
- 当健身用户进入直播间:一场全新内容生态的破壁与重建
- 今天又get到一个小技能,collect_set函数
- 不妥协的全面屏 — 华硕灵耀 Deluxe13 长测
热门文章
- 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(2月6日-2月12日)
- 防范攻击 加强管控 - 数据库安全的16条军规
- android 05 桢布局:FrameLayout 网格布据 GridLayout
- hibernate dialect 方言 sqlserver2000 的方言
- Visual Studio 2012 简体中文 旗舰正式版 ISO 下载
- Linux管理文件和目录
- Oracle中如何删除重复数据
- 还亲力亲为的蜡笔小新
- 排行榜上用C++写局域网聊天程序
- feiq肆无忌惮欺压同行