111*_*110 3 sql t-sql sql-server stored-procedures sql-server-2008
我试图使存储过程:
- 获取int
行列表
select ItemId from Items -- this returns: 1,2,3,4,5,6
Run Code Online (Sandbox Code Playgroud)
在程序的第二部分中,我必须在另一个表中为每个选定的数字添加行.
就像是:
foreach ItemId在上一个结果中插入到表(ItemIdInAnotherTable)中的值(ItemId)
UPDATE
我错过了一个重要的部分来自问题.在另一部分程序中,当我在另一个表中插入所选项时,需要插入更多列.像这样的东西:
插入dbo.ItemsNotificator(UserId,ItemId)(13879,(从Items中选择ItemId))
所以这不是一个专栏.抱歉混淆:(
编辑:假设表[table]
已经存在,并且如果User是常量,那么这样做:
INSERT INTO [table](UserId, ItemIdInAnotherTable)
SELECT 13879, ItemId
FROM Items;
Run Code Online (Sandbox Code Playgroud)
如果UserId
完全来自另一个表,您需要弄清楚UserId和ItemId之间需要什么关系.例如,如果所有用户都链接到所有项目,那么它是:
INSERT INTO [table](UserId, ItemIdInAnotherTable)
SELECT u.UserId, i.ItemId
FROM Items i CROSS JOIN Users u;
Run Code Online (Sandbox Code Playgroud)
如果表[table]
尚不存在,那么您可以使用SELECT INTO
,并指定一个新的表名(例如#temp
存储在其中的表tempdb
)
SELECT u.UserId, i.ItemId
INTO #tmpNewTable
FROM Items i CROSS JOIN Users u;
Run Code Online (Sandbox Code Playgroud)
新创建的表中的列将具有名称UserId
,ItemId
并且具有相同的类型.