参数个数可变的mysql插入语句如何写

已被遗弃 2016-12-01 09:38:58
现在是这样,比如我有一个表一行10个字段,然后第一次我可以按序把这十列数据插进去,然后可能那个表的结构可能会在另一个地方被改变,我可以知道改变后有几列数据,如果仍然按序插入,如何写一个动态的sql语句实现插入过程。
...全文
578 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
AHUA1001 2019-06-25
  • 打赏
  • 举报
回复
我这里抛一块砖,希望您能引玉。 按照以下步骤执行即可,是一个例子,应该能满足您的要求。 首先,建表脚本。 CREATE TABLE `table1` (   `KEY` VARCHAR(2) NOT NULL DEFAULT '',   `VALUE` VARCHAR(3) NOT NULL DEFAULT '' ) ; 然后,插入测试数据,您可以在这个基础上,随意添加、修改、删除数据。 insert  into `table1`(`KEY`,`VALUE`) values  ('1','蓝色'), ('1','红色'), ('2','大号'), ('2','小号'), ('61','精品'), ('61','普通品'); 最后,执行以下代码,不是一条一条的单独执行,而是全部选择后,一起执行。 SET @R1 := 0 ; SET @R2 := 0 ; SET @S := '' ; SELECT CONCAT("SELECT @R2:=@R2+1 S1,CONCAT_WS('/',",S1,') S2 FROM ' ,S2,' WHERE ',S3,';') INTO @S FROM (SELECT GROUP_CONCAT('T',R,'.','VALUE') S1,GROUP_CONCAT('TABLE1',' T',R) S2,REPLACE(GROUP_CONCAT('T',R,'.KEY=',T.KEY),',',' AND ') S3 FROM (SELECT @R1:=@R1+1 R,T.KEY FROM TABLE1 T GROUP BY T.KEY) T) T ; PREPARE stmt1 FROM @S ;  EXECUTE stmt1  ; 
Larry Wu 2019-06-20
  • 打赏
  • 举报
回复
把参数设计为一个表名,该表含有两列, 第一列为一个自增长的数字(从1开始), 1代表一般意义的第一个参数,2代表第二个参数, 3代表第三个参数…… 第二列代表参数的值 这样,该表包含多少行就代表接收了多少个参数
mabaoyun 2016-12-03
  • 打赏
  • 举报
回复
用mybatis中的foreach
LongRui888 2016-12-01
  • 打赏
  • 举报
回复
这种最好是把字段,改成一列,比如: id 字段名称 值 这样的
LongRui888 2016-12-01
  • 打赏
  • 举报
回复
然后可能那个表的结构可能会在另一个地方被改变 你是说,表结构会动态变化? 刚才是10列,一会可能就是8列了吗? 为什么会有这样的需求呢,感觉不是太合理。。。

57,062

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧