我使用MySQL 5.7.9
因此它支持内部JSON类型。我在插入后创建了一个'触发器将相关数据从A表插入到B表中,该相对数据是表A中的JSON格式数据。
我可以在while循环中分别解析并将该数据插入到B中。
我的问题是如何使用插入语句来插入事件,例如插入值(x,x),(y,y)...以获得高效率。
set @jsonO := CAST(NEW.targets AS JSON);
set @targetLen := JSON_LENGTH(@jsonO);
set valueStr = NULL;
set target = 0;
while target < @targetLen do
set valueStr = CONCAT_WS(',',valueStr,CONCAT('(',JSON_EXTRACT(NEW.targets,CONCAT('$[',target,']')) ,NEW.id,')'));
#insert into user_info(userid,infoid) values(JSON_EXTRACT(NEW.targets,CONCAT('$[',target,']')),NEW.id);
#!!! INSERT INTO SINGLE ROW IS OK BUT IS INEFFICIENCY
set target = target + 1;
end while;
insert into user_info(userid,infoid) values ???;
我的问题是如何使用变量一次插入多行。
答案 0 :(得分:0)
以下是example in W3schools您可以为自己的
使用相同的示例答案 1 :(得分:0)
有点晚了,但是使用准备好的语句呢?
在循环中(准备阶段)构建查询字符串,然后在循环之后执行。
我还没有尝试过!
https://dev.mysql.com/doc/refman/5.7/en/sql-prepared-statements.html