如何遍历Organisation表并向User表动态插入新记录?
解决方案:从Organisation表批量插入User表记录
嘿,直接用SQL的INSERT...SELECT语法就能完美实现你要的遍历插入需求,不用分开执行查询和插入操作,一步到位更高效。
你之前的参考写法是分开的查询和插入,没法动态遍历批量处理,调整成下面的写法就可以了:
INSERT INTO [User] (userlogin, Organisationid, emailaddress, username, userpassword) SELECT 'AGT' + Code, Organisationid, 'test@gmail.com', 'User' + Code, '123' FROM Organisation;
逻辑说明:
- 这个语句会自动遍历
Organisation表的每一条记录,把每行的Code和Organisationid动态带入User表的对应字段 'AGT' + Code会给每个组织的Code加上AGT前缀作为新用户的登录名,'User' + Code同理生成用户名- 固定值
test@gmail.com和123会被填充到所有新插入用户的邮箱和密码字段中
额外注意事项:
如果你的Code字段是数值类型(比如int、bigint),直接拼接字符串会报错,需要先把它转换成字符串类型,用CAST函数处理就行:
INSERT INTO [User] (userlogin, Organisationid, emailaddress, username, userpassword) SELECT 'AGT' + CAST(Code AS VARCHAR(50)), Organisationid, 'test@gmail.com', 'User' + CAST(Code AS VARCHAR(50)), '123' FROM Organisation;
另外,User是SQL的保留关键字,所以用方括号[User]包裹表名,避免语法解析错误。
内容的提问来源于stack exchange,提问作者Kapil
相关产品推荐
相关产品推荐

