技术标签: mysql 字符串拆分成表
I have two inputs for my stored procedure. One is the 'RoledID' and second one is the 'MenuIDs'. 'MenusIDs' is a list of comma separated menus ids that need to be inserted with RoledID. RoleId is just an INT and we need to put this RoledID against each MenuID. My table 'RolesMenus' contains two columns one for MenuID and one for RoleID.
Now I need to split MenuIDs and insert each MenuID with RoleID.
How can I write a stored procedure for it?
解决方案
You can build one INSERT query (because statement allows to insert multiple records) and run it with prepared statements, e.g. -
SET @MenuIDs = '1,2,3';
SET @RoledID = 100;
SET @values = REPLACE(@MenuIDs, ',', CONCAT(', ', @RoledID, '),('));
SET @values = CONCAT('(', @values, ', ', @RoledID, ')'); -- This produces a string like this -> (1, 100),(2, 100),(3, 100)
SET @insert = CONCAT('INSERT INTO RolesMenus VALUES', @values); -- Build INSERT statement like this -> INSERT INTO RolesMenus VALUES(1, 100),(2, 100),(3, 100)
-- Execute INSERT statement
PREPARE stmt FROM @insert;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
As you see, it can be done without stored procedure.
需求:用户输入月份,电脑判断季节列出三种方法1-3为春,4-6为夏,7-9为秋,10-12为冬第一种逻辑与运算#include<stdio.h>int main() { int a = 0; printf("请输入季节:"); scanf_s("%d", &a); if (a >= 3 && a<=5 ) { p..._c语言一年四季,按农历一般规定1~3月为春季,4~6月为夏季,7~9月为秋季,10~12月
之前在做毕设的一个FPS游戏时,遇到了使用射线检测失效的情况,特此记录以下。前因在FPS游戏中,对于子弹的发射主要通过两种方式来实现。一种可以通过实例化子弹的GameObject对其施加物理效果从而达到发射的目的。在玩过的绝地求生中,可以清楚看到子弹的发射轨迹,这里应该就是使用的这种方法。但是使用碰撞检测的问题就是如果一方速度过快撞击到另一碰撞体会有直接穿透的可能性存在(面试题),还有就是性能的消..._auto sync transforms
nodepad++官网更新后下载速度实在是太慢了,受不了!用各种方式下载都很慢,而且容易中断,捣鼓了一中午才下载下来,给大家分享下,也为了以后自用。下载链接:CSDN:审核中百度网盘:链接: https://pan.baidu.com/s/1gcpJl1C1H-6pZos9UHF-lQ 提取码: rpbi..._pad++官网
Linux安装yum工具-安装过程_dyyum
Redis-day01-noteRedis介绍特点及优点1、开源的,使用C编写,基于内存且支持持久化2、高性能的Key-Value的NoSQL数据库3、支持数据类型丰富,字符串strings,散列hashes,列表lists,集合sets,有序集合sorted sets 等4、支持多种编程语言(C C++ Python Java PHP ... )与其他数据库对比1、My...
今天使用Sublimerge时发现需要许可证才可以使用了。现在发现一个Diffy插件和Sublimerge类似不过功能比较简单。安装方式: ①打开sublime text,按下Ctrl+Shift+P,输入 install 调出 Package Control: Install Package 选项,按下回车。 ② 输入Diffy,按下回车,安装插件 使用方式:在视图打开两列,然后将需要比较的文件两列各放置一个。右击有Diffy然后进行比较。快捷键是: 开启:Ctrl+K,Ctrl+d_sublime 如何对比两行数据不同
#井号 (comments)#管理员$普通用户脚本中#!/bin/bash #!/bin/sh井号也常出现在一行的开头,或者位于完整指令之后,这类情况表示符号后面的是注解文字,不会被执行。# This line is comments.echo “a = $a” # a = 0由于这个特性,当临时不想执行某行指令时,只需在该行开头加上 # 就行了。这常用在撰写过程..._linux符号
今天看到了一个小的知识点,个人觉得还是蛮实用的,但是一般很难去想到这种方法,所以这里记录一下,方便今后使用。问题在Windows环境下,想要确定一个应用使用的端口号,有些人可能会选择直接去search online,这是一个办法,但是有些应用是有不止一个默认端口,还有备用端口,这时候确定到底是使用了哪一个就有些困难了。解决方案1、快捷键Win+R调出运行窗口,输出”cmd“按“Enter”键调出DO_把netstat 看作任务管理器
# include # include int main(){int strfind(char str[], char key[]);//str[]中为源串,key[]中为需查找的字串int loop;char word1[1000], word2[1000];gets(word1);gets(word2);loop = strfind(word_c语言 strfind
Bagging算法特点:Boosting是一种框架算法,以随机森林(RDF)算法为代表。采用的是随机有放回的选择训练数据然后构造分类器,最后组合。从原始样本集中使用Bootstraping方法随机抽取n个训练样本,共进行k轮抽取,得到k个训练集。(k个训练集之间相互独立,元素可以有重复)对于k个训练集,我们训练k个模型(这k个模型可以根据具体问题而定,比如决策树,knn等)对..._为什么bagging少抽37%提高准确率
主机连接wifi时,虚拟机如何连接网络在介绍连接方法之前,我们先了解一下VMware虚拟机三种网络模式:桥接模式、仅主机、NAT模式。 毕竟照葫芦画瓢学不到精髓,先学习一下基础知识。不想看可以直接看二。一、基础知识1、仅主机模式仅主机模式指的是虚拟机只能与主机之间相互通信,虚拟机并不能上网。(仅主机模式需要设置主机的IP地址与虚拟机为同一个IP段,才能保证虚拟机与主机能相互通信,即也能p..._rod虚拟机如何连接wifi
这是一道贪心算法的题目,主要的思想就是以最少的钱买最多的东西,这样就需要对给定的数据进行排序,每次的进行比较。#include#include#includeusing namespace std;struct trate{ double food ,javabin; double t;}w[1005];bool cmp(trate a, trate b){ if(a.t_胖老鼠的交易c++