mysql存储过程中in条件多个值,使用临时表解决
select IFNULL(GROUP_CONCAT(id_batch),'-1') into V_ID_BATCH from (
select id_batch from tableA
)aa;
select * from TABLE_STATUS WHERE ID_BATCH IN ( V_ID_BATCH );
后来发现这个V_ID_BATCH 外面带了引号,被当成一个字符串了,而不是逗号分隔的多个值。为了避免拼接sql,可以使用find_in_set,但是find_in_set不会走索引而全表扫描,如果表比较大会特别慢,几秒钟的样式。为了能使用索引,我使用了临时表。临时表是会话基本的,只存在当前数据库连接对象中,连接断开自动清理。不同连接对象之间不会冲突。
DROP TEMPORARY TABLE IF EXISTS TMP_ID_SUB_BATCH ;
CREATE TEMPORARY TABLE TMP_ID_SUB_BATCH select id_batch from ( select id_batch from tableA )aa;
select * from TABLE_STATUS WHERE ID_BATCH IN ( select * from TMP_ID_SUB_BATCH );
临时表是局部临时表只存在于单个数据库连接对象中,也就是两个数据库连接可以建立同名的临时表,而且互相隔离不冲突。同一个连接的多次访问可以获取到同一个临时表,连接断开后临时表自动清理。
不使用临时表的话还有三种思路:
一是使用游标,遍历游标中处理单个值;
二是按逗号切割成数组,遍历数组处理单个值
三是使用动态拼接sql,感觉这个不是好
mysql存储过程中in条件多个值,使用临时表解决相关推荐
- mysql 存储过程 条件_如何在MySQL存储过程中正确实现条件?
要在存储过程中设置条件,请使用以下语法-if yourCondition then yourStatement1; else yourStatement2'; end if ; end // 让我们实 ...
- MySQL存储过程中的3种循环
MySQL存储过程中的3种循环 在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易 ...
- mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别
在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...
- mysql扩展中如何处理结果集_我们如何处理MySQL存储过程中的结果集?
我们可以使用游标来处理存储过程中的结果集.基本上,游标允许我们迭代查询返回的一组行并相应地处理每一行. 为了演示在MySQL存储过程中CURSOR的用法,我们基于以下名为" student_ ...
- linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法
中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题. 1.直接使用insert into语句没问题,能够正常插入汉字. 2.把insert into语句移到Procedu ...
- 在SQL存储过程中给条件变量加上单引号
在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL) set @wher ...
- mysql存储过程set什么意思_浅谈MySQL存储过程中declare和set定义变量的区别
在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...
- mysql存储过程中as_Mysql存储过程中的delimiter
这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...
- mysql 存储过程中limit
mysql 存储过程中limit 1.mysql的高版本(5.5),存储过程中的limit可以使用变量,如下:select * from student limit iStart,iNum; 2.my ...
最新文章
- Android 反编译Apk提取XML文件
- 无人驾驶卡车实现量产 主线科技6个月完成13辆商业交付
- 又一位先驱陨落:伯特·萨瑟兰去世,他参与创造互联网、Java、图形界面PC、微处理器,也是明智的实验室领袖...
- python 画云图_【词云图】如何用python的第三方库jieba和wordcloud画词云图
- Android源码学习(3) Handler之MessageQueue
- 在Flex中使用本地共享对象
- 关于String,StringBuffer和StringBuilder之间的区别和联系
- spring 定时任务---task
- 单片机流水灯源代码+仿真
- windows下python3安装pip方法详解
- VB6-Mini_20160110(VB6精简版下载)
- 为【桌面右键菜单 - 新建文档】添加快捷键
- 爬楼梯——回溯(python)
- catagory添加属性
- C语⾔的标识符以及规范
- java多边形填充_关于java:从图像(填充形状)生成多边形
- keil软件仿真逻辑分析仪出现了Unknown Signal
- 云音乐vue开发日记
- 四足鼎立,快递业的变局前夜
- 网康防火墙--上线指南_在线付款接受指南-第2部分
热门文章
- 飞猪信息流内容推荐探索
- 【报告分享】2020中国基民图鉴.pdf(附下载链接)
- 智能推荐系统的终极目标:“让你成为更好的自己”
- pytorch中tensor、numpy.array、list三者互相转换
- 算法工程师面试备战笔记4_余弦相似与欧氏距离有什么区别和联系
- PyTorch实战福利从入门到精通之四——卷积神经网络CIFAR-10图像分类
- 蓝桥杯入门训练Fibonacci数列
- 如何用1年时间获得3年成长?
- python动画精灵_Python游戏开发:pygame中的Sprite(精灵)模块和加载动画
- java题1_java面试题1