现在是这样,比如我有一个表一行10个字段,然后第一次我可以按序把这十列数据插进去,然后可能那个表的结构可能会在另一个地方被改变,我可以知道改变后有几列数据,如果仍然按序插入,如何写一个动态的sql语句实现插入过程。

解决方案 »

  1.   

    用mybatis中的foreach
      

  2.   

    我这里抛一块砖,希望您能引玉。
    按照以下步骤执行即可,是一个例子,应该能满足您的要求。首先,建表脚本。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  ;