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并且具有相同的类型.
| 归档时间: |
|
| 查看次数: |
6028 次 |
| 最近记录: |