当前位置: 首页 > 编程笔记 >

mysql中循环截取用户信息并插入到目标表对应的字段中

施默
2023-03-14
本文向大家介绍mysql中循环截取用户信息并插入到目标表对应的字段中,包括了mysql中循环截取用户信息并插入到目标表对应的字段中的使用技巧和注意事项,需要的朋友参考一下

操作环境:有表game_list,字段:uid,score1,score2,seat_id,last_update;
传入参数为i_player_detail ,传入的值为多个用户的id、之前分数、之后分数、座位号,每个用户的数据用分号(;)隔开;
操作目的:将各个用户对应的属性插入到目标表对应的字段中,last_update为数据更新日期;
传入参数i_player_detail ,里面存放多个用户的信息,每个用户的一组数据用分号隔开,每个用户的信息多个,比如
“用户id,score,desk,seat;
用户id,score,desk,seat;……”

-- 使用存储过程
delimiter $$

use `log_pdk`$$

drop procedure if exists `game_c`$$

create procedure `game_c` (in i_player_detail varchar(500))
SQL SECURITY INVOKER
BEGIN

DROP TABLE IF EXISTS `temp_list`;

--创建临时表,将截取的数据先插入到临时表
CREATE TEMPORARY TABLE `temp_list`(
`uid` INT(10) UNSIGNED NOT NULL,
`score1` INT(10) UNSIGNED NOT NULL,
`score2` INT(10) UNSIGNED NOT NULL,
`seat_id` TINYINT(3) UNSIGNED NOT NULL
);

-- declare str varchar(500);-- 用来拼接sql动态语句
declare m_detail varchar(500);
declare m_num tinyint;

-- 当传入的用户信息字符串中含有分号';',进行截取
set m_num = position(';' in str) -- 不存在分号的时候,返回0
while m_num >= 1 do
begin
set @str = 'insert into temp_list values (' + substring(m_detail,1,m_num-1)+')' -- 截取第一个用户的信息(第一个分号前面的字符),插入到临时表
prepare statement1 from @str;
execute statement1;
deallocate prepare statement1;
set m_detail = substring(m_detail,m_num+1); -- 定义除去第一个用户和分号那部分的字符串
set set m_num = position(';' in str);
end while;

-- 从临时表抽出所有字段,添加时间字段,插入到表game_list
INSERT INTO `game_list`(`uid`,`score1`,`score2`,`seat_id`, `last_update`)
SELECT `uid`, `score1`, `score2`, `seat_id`, current_date() 
FROM `temp_list`;
end$$
delimiter ;
 类似资料:
  • 问题内容: 我可以使用其他某种语言来解决它,但我渴望学习更多SQL。 有没有办法解决这个问题: 我有两个表(并且不能更改结构),一个表包含一些数据,另一个表包含一些其他信息。它们以这种方式相关:。 我想怎么办:如果没有数据集,但是,我想将它复制过来,使得在年底有相同数量的两个表中的数据集。我以这种方式尝试过,但不幸的是它不起作用: 有人有想法吗,还是最后没有可能?提前致谢! 问题答案: 您可以用来

  • 问题内容: 我想在一个表中插入多个字段时遇到问题。 这是我的表格: 这是提交代码: 该查询将插入数据库,但不会插入我输入的值。 有人可以帮帮我吗? 问题答案: 您正在对而不是在名称/年龄数组上进行foreach 。您应该像这样对名称或年龄数组进行foreach: 我还要指出,您当前容易受到SQL注入的影响,因此我添加了转义字符串以获取名称/年龄的步骤。 我也强烈建议您仅在数据库中进行一次批量插入,

  • 我试图通过使用Kryonet进行通信来创建一个基本的IRC。我遇到的问题是,在我的代码中,我不能安全地使用允许用户键入和发送消息的main while循环,因为Scanner给出了一个错误,并且似乎跳过了对nextLine()的调用。我想做的是让扫描仪在继续之前等待用户输入。 更准确地说,程序将首先在行的开头放一个“:”,然后在用户按enter键后获取用户键入的任何内容,然后将其发送到服务器。我得

  • 本文向大家介绍oracle获取当前用户表、字段等详细信息SQL,包括了oracle获取当前用户表、字段等详细信息SQL的使用技巧和注意事项,需要的朋友参考一下 做个笔记,仅供参考 备注:user_开头是当前用户,all_开头所有用户,dba_开头包括系统表

  • 我是java的初学者。我试图编写一个程序,在给定位置插入一个节点,并显示整个链表。但是,我的节点似乎没有被插入,当我显示链接列表时,只显示第一个节点值。有人能解释一下我哪里出了问题吗? //这里,位置是索引位置。索引从0开始,以大小1结束,就像一个数组。 //插入代码 //遍历代码 //主要方法 输出:

  • 本文向大家介绍MySql用DATE_FORMAT截取DateTime字段的日期值,包括了MySql用DATE_FORMAT截取DateTime字段的日期值的使用技巧和注意事项,需要的朋友参考一下 用 DATE_FORMAT 来格式化日期字段