3

次のようなストアド プロシージャを作成しようとしています: -行
のリストを取得するint

select ItemId from Items -- this returns: 1,2,3,4,5,6
  • 手順の 2 番目の部分では、選択した番号ごとに別のテーブルに行を追加する必要があります。
    何かのようなもの:

    テーブル (ItemIdInAnotherTable) 値 (ItemId) に挿入する前の結果の foreach ItemId
    更新

    質問から 1 つの重要な部分を見逃しています。手順の別の部分で、選択したアイテムを別のテーブルに挿入するときに、さらにいくつかの列を挿入する必要があります。このようなもの:

    insert into dbo.ItemsNotificator (UserId,ItemId) (13879, (ItemId から ItemId を選択))

したがって、それは1つの列ではありません。混乱させて申し訳ありません :(

4

4 に答える 4

6

編集:テーブルが既に存在すると仮定し、[table]ユーザーが定数の場合は、次のようにします。

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と 同じ型になります。

于 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 に答える