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条件多个值,使用临时表解决相关推荐

  1. mysql 存储过程 条件_如何在MySQL存储过程中正确实现条件?

    要在存储过程中设置条件,请使用以下语法-if yourCondition then yourStatement1; else yourStatement2'; end if ; end // 让我们实 ...

  2. MySQL存储过程中的3种循环

    MySQL存储过程中的3种循环 在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易 ...

  3. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  4. mysql扩展中如何处理结果集_我们如何处理MySQL存储过程中的结果集?

    我们可以使用游标来处理存储过程中的结果集.基本上,游标允许我们迭代查询返回的一组行并相应地处理每一行. 为了演示在MySQL存储过程中CURSOR的用法,我们基于以下名为" student_ ...

  5. linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法

    中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题. 1.直接使用insert into语句没问题,能够正常插入汉字. 2.把insert into语句移到Procedu ...

  6. 在SQL存储过程中给条件变量加上单引号

    在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL) set @wher ...

  7. mysql存储过程set什么意思_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  8. mysql存储过程中as_Mysql存储过程中的delimiter

    这个命令与存储过程没什么关系吧. 其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了. 默认情况下,delimiter是分号;.在命令行客户端中,如果有一行命令以分号结束, ...

  9. mysql 存储过程中limit

    mysql 存储过程中limit 1.mysql的高版本(5.5),存储过程中的limit可以使用变量,如下:select * from student limit iStart,iNum; 2.my ...

最新文章

  1. Android 反编译Apk提取XML文件
  2. 无人驾驶卡车实现量产 主线科技6个月完成13辆商业交付
  3. 又一位先驱陨落:伯特·萨瑟兰去世,他参与创造互联网、Java、图形界面PC、微处理器,也是明智的实验室领袖...
  4. python 画云图_【词云图】如何用python的第三方库jieba和wordcloud画词云图
  5. Android源码学习(3) Handler之MessageQueue
  6. 在Flex中使用本地共享对象
  7. 关于String,StringBuffer和StringBuilder之间的区别和联系
  8. spring 定时任务---task
  9. 单片机流水灯源代码+仿真
  10. windows下python3安装pip方法详解
  11. VB6-Mini_20160110(VB6精简版下载)
  12. 为【桌面右键菜单 - 新建文档】添加快捷键
  13. 爬楼梯——回溯(python)
  14. catagory添加属性
  15. C语⾔的标识符以及规范
  16. java多边形填充_关于java:从图像(填充形状)生成多边形
  17. keil软件仿真逻辑分析仪出现了Unknown Signal
  18. 云音乐vue开发日记
  19. 四足鼎立,快递业的变局前夜
  20. 网康防火墙--上线指南_在线付款接受指南-第2部分

热门文章

  1. 飞猪信息流内容推荐探索
  2. 【报告分享】2020中国基民图鉴.pdf(附下载链接)
  3. 智能推荐系统的终极目标:“让你成为更好的自己”
  4. pytorch中tensor、numpy.array、list三者互相转换
  5. 算法工程师面试备战笔记4_余弦相似与欧氏距离有什么区别和联系
  6. PyTorch实战福利从入门到精通之四——卷积神经网络CIFAR-10图像分类
  7. 蓝桥杯入门训练Fibonacci数列
  8. 如何用1年时间获得3年成长?
  9. python动画精灵_Python游戏开发:pygame中的Sprite(精灵)模块和加载动画
  10. java题1_java面试题1