在SQL中复制一行?
好的,我有一个有两列的表格,userID和courseID。 它用于将培训课程分配给用户。 它看起来像这样:
userid courseid
0 1
0 3
0 6
1 1
1 4
1 5
所以用户0被分配到课程1,3,6并且用户1被分配到1,45
无论如何,我需要将每个分配给6的用户创建一个新的行,其中包含userid和courseid 11,基本上分配每个当前分配给6的用户也分配给11
出于某种原因(我没有创建这个数据库),两行都被标记为主键,并且我尝试过的一些语句已经引发了一个错误,因为这个,这个交易到底是什么?
哦,也许这是因为有一些用户已被分配到11,所以它可能会窒息?
请帮忙
Insert Into TableName (userID, courseID)
Select userID, 11 From TableName Where courseID=6;
另外,我对你的评论感到有点困惑,他们都是主键。 两行都可以是主键的一部分,或者两者都可以是唯一键,但它们不能都是主键。 就错误而言,这可能是因为查询试图插入与现有行重复的行。 要消除这种可能性,你可以这样做:
Insert Into TableName (userID, courseID)
Select userID, 11 From TableName Where courseID=6
AND (userID not in (Select userID From TableName Where courseID=11))
根据您的数据库,这也可以工作:
INSERT OR IGNORE INTO TableName (userID, courseID)
SELECT userID, 11 FROM TableName WHERE courseID=6;
无论如何,你去了。
insert into TableName (userId, courseId)
select userId, 11
from TableName
where courseId = 6
and not exists (
select 1
from TableName nested
where nested.userId = TableName.UserId
and nested.courseId = 11
)
选择分配给courseId 6但尚未分配给courseId 11的所有用户,并为他们插入一条新记录给course11。
这应该有所帮助:
INSERT
INTO [table]
(
userid,
courseid
)
SELECT userid,
11
FROM [table]
WHERE courseid = 6
AND userid NOT IN
(SELECT userid
FROM [table]
WHERE courseid = 11
);
这将选择课程6中不在课程11中的所有用户,并将课程11添加到表格中。
链接地址: http://www.djcxy.com/p/94289.html