求一个SQL的语句

aqgsh 2017-02-19 12:52:11
先看两张表:

1、用户表


2、用户课程表


需求:要给特定用户组(usergroup)的用户开通指定的课程,如:给用户组为1,2,3的用户开通课程id(coursesid)为 4,5,6的课程。此操作可能会涉及几千用户,甚至更多。所以不想写几千句 insert into ....。知道sql语句可以编程,只是本人不懂,请问怎么循环插入

...全文
70 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
a145600 2019-03-16
  • 打赏
  • 举报
回复
求asp.net那个比邻网的源码,邮箱1456002130@qq.com
aqgsh 2017-02-19
  • 打赏
  • 举报
回复
引用 4 楼 sinat_28984567 的回复:
[quote=引用 3楼我是你的主体 的回复:][quote=引用 1 楼 sinat_28984567 的回复:] 语句: [code=sql]--测试数据 ......
好复杂,看不懂的。 用户组usergroup和要开通课程的id,会在C#中,直接获取到的,[/quote]这个要是复杂的话,你就循环你的课程id ,然后循环里边执行这条插入语句。 INSERT INTO #用户课程表 ( uid, coursesid ) SELECT id , 课程id FROM #用户表 WHERE usergroup IN ( 1, 2, 3 ) --这里的1,2,3是组[/quote] 谢谢,可以批量插入的。原本以为要用sql编程,使用while语句什么的,没想到子查询也行
二月十六 版主 2017-02-19
  • 打赏
  • 举报
回复
引用 3楼我是你的主体 的回复:
[quote=引用 1 楼 sinat_28984567 的回复:] 语句: [code=sql]--测试数据 ......
好复杂,看不懂的。 用户组usergroup和要开通课程的id,会在C#中,直接获取到的,[/quote]这个要是复杂的话,你就循环你的课程id ,然后循环里边执行这条插入语句。 INSERT INTO #用户课程表
( uid, coursesid )
SELECT id ,
课程id
FROM #用户表
WHERE usergroup IN ( 1, 2, 3 ) --这里的1,2,3是组
aqgsh 2017-02-19
  • 打赏
  • 举报
回复
引用 1 楼 sinat_28984567 的回复:
语句: [code=sql]--测试数据 ......
好复杂,看不懂的。 用户组usergroup和要开通课程的id,会在C#中,直接获取到的,
二月十六 版主 2017-02-19
  • 打赏
  • 举报
回复
--测试数据
IF not object_ID('#用户表') is null
drop table #用户表
Go
CREATE TABLE #用户表
(
id INT ,
usergroup INT ,
realname NVARCHAR(100)
)
Insert #用户表
select 1,1,'张三' UNION ALL
select 2,2,'吴晓民' UNION ALL
select 3,2,'陈大二' UNION ALL
select 4,3,'陆勇' UNION ALL
select 5,3,'王金星' UNION ALL
select 6,3,'周朝党' UNION ALL
select 7,4,'李波'
IF not object_ID('#用户课程表') is null
drop table #用户课程表
Go
CREATE TABLE #用户课程表
(
id INT identity(1,1) PRIMARY KEY ,
[uid] INT ,
coursesid int
)
--测试数据结束
--要插入的课程id
;WITH tempcourse(courseid) AS (
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5
)
--插入语句
INSERT INTO #用户课程表
( uid, coursesid )
SELECT id ,
t.courseid
FROM #用户表
CROSS APPLY ( SELECT courseid
FROM tempcourse
) t
WHERE usergroup IN ( 1, 2, 3 )

--读取测试结果
SELECT * FROM #用户课程表

--删除临时表
DROP TABLE #用户表,#用户课程表
二月十六 版主 2017-02-19
  • 打赏
  • 举报
回复
语句:
--测试数据
IF not object_ID('#用户表') is null
drop table #A
Go
CREATE TABLE #用户表
(
id INT ,
usergroup INT ,
realname NVARCHAR(100)
)
Insert #用户表
select 1,1,'张三' UNION ALL
select 2,2,'吴晓民' UNION ALL
select 3,2,'陈大二' UNION ALL
select 4,3,'陆勇' UNION ALL
select 5,3,'王金星' UNION ALL
select 6,3,'周朝党' UNION ALL
select 7,4,'李波'
IF not object_ID('#用户表') is null
drop table #A
Go
CREATE TABLE #用户课程表
(
id INT identity(1,1) PRIMARY KEY ,
[uid] INT ,
coursesid int
)
--测试数据结束
--要插入的课程id
;WITH tempcourse(courseid) AS (
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5
)
--插入语句
INSERT INTO #用户课程表
( uid, coursesid )
SELECT id ,
t.courseid
FROM #用户表
CROSS APPLY ( SELECT courseid
FROM tempcourse
) t
WHERE usergroup IN ( 1, 2, 3 )

--读取测试结果
SELECT * FROM #用户课程表

--删除临时表
DROP TABLE #用户表,#用户课程表



结果:

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧