我正在尝试制作以下存储过程:
- 获取int
行
select ItemId from Items -- this returns: 1,2,3,4,5,6
在程序的第二部分中,我必须在另一个表中为每个选定的数字添加行。
类似的东西:
以前的结果中的foreach ItemId
插入表(ItemIdInAnotherTable)值(ItemId)
的更新
我想念一个重要问题。
在另一部分程序中,当我在另一个表中插入所选项时,需要插入更多列。像这样:
插入dbo.ItemsNotificator (用户ID,项目Id) (13879,(从项目中选择ItemId))
所以这不是一个专栏。抱歉混淆:(
答案 0 :(得分:6)
编辑:
假设表[table]
已经存在,并且如果User是常量,那么这样做:
INSERT INTO [table](UserId, ItemIdInAnotherTable)
SELECT 13879, ItemId
FROM Items;
如果UserId
完全来自另一个表,您需要弄清楚UserId和ItemId之间需要什么关系。例如,如果所有用户都链接到所有项目,那么它是:
INSERT INTO [table](UserId, ItemIdInAnotherTable)
SELECT u.UserId, i.ItemId
FROM Items i CROSS JOIN Users u;
如果表[table]
尚不存在,那么您可以使用SELECT INTO
,并指定一个新的表名(例如存储在#temp
中的tempdb
表)
SELECT u.UserId, i.ItemId
INTO #tmpNewTable
FROM Items i CROSS JOIN Users u;
新创建的表中的列将具有名称UserId
和ItemId
,并且具有相同的类型。
答案 1 :(得分:1)
对我来说很简单:
INSERT INTO ItemIdInAnotherTable (ItemId)
SELECT ItemId from Items
答案 2 :(得分:0)
这正是普通insert
命令的作用。做这样的事情:
insert into Table (ItemID)
select ItemID from Items;
答案 3 :(得分:0)
使用INSERT INTO..SELECT
声明
INSERT INTO ItemIdInAnotherTable (ItemId)
SELECT ItemId
FROM Items