3

我正在尝试制作存储过程:
- 获取int行列表

select ItemId from Items -- this returns: 1,2,3,4,5,6
  • 在程序的第二部分,我必须在另一个表中为每个选定的数字添加行。
    就像是:

    以前结果中的 foreach ItemId 插入表 (ItemIdInAnotherTable) 值 (ItemId)
    更新

    我错过了问题的一个重要部分。在程序的另一部分中,当我在另一个表中插入所选项目时,需要再插入几列。像这样的东西:

    插入 dbo.ItemsNotificator (UserId,ItemId) (13879, (select ItemId from Items))

所以它不是一列。很抱歉造成混淆:(

4

4 回答 4

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;

新创建的表中的列将具有相同的名称UserIdItemId类型。

于 2012-11-22T15:33:40.753 回答
1

对我来说看起来很简单:

 INSERT INTO ItemIdInAnotherTable (ItemId)
 SELECT ItemId from Items
于 2012-11-22T15:33:17.683 回答
0

这正是普通insert命令所做的。只需执行以下操作:

insert into Table (ItemID) 
    select ItemID from Items;
于 2012-11-22T15:33:58.667 回答
0

使用INSERT INTO..SELECT声明

INSERT INTO ItemIdInAnotherTable (ItemId)
SELECT ItemId 
FROM   Items
于 2012-11-22T15:34:00.860 回答