1

私は基本的に設定されているテーブルを持っているので、id(UNIQUE),mapID,employe_ID,と 値があります...それはこのように見えます

テーブル

ID    mapID       employee_id     value
1       1         1               Brian
2       1         1               617-555-5555
3       1         2               Boston Office
4       1         2               Mary
5       3         1               617-666-6666
6       3         2               New york office

このテーブルをループしたいので、「それぞれ」同じemployee_idに対して、少しきれいにセットアップされた別のテーブルに挿入ステートメントを実行できます。

このように、私が伝えようとしていることの大まかなアイデアが得られます。

Select * from table where employe_id=1
foreach(item in aboveSelect)
{
   Insert into table2
}


明らかに、これは正しい構文ではありません。

4

2 に答える 2

3

SQLデータに対して「foreachloop」を実行しないでください。データをセットとして使用してください。だからあなたの場合-このようにしてください:

INSERT INTO dbo.Table2(Col1, Col2, ...., ColN)
  SELECT Col1, Col2, ...., ColN
  FROM dbo.table 
  WHERE employee_id=1

素晴らしく、速く、セット指向....

于 2012-05-02T09:28:52.437 に答える
2

ループ/カーソルは必要ありません-これは単一のアトミックステートメントとして実行できます。

INSERT INTO table2 (col1, col2, col3)
    SELECT id, mapid, employee_id FROM table1

...これは、カーソルベースのアプローチよりも高速でクリーンです。SQL Serverはほとんどの問題に対してセットベースのアプローチを好むため、他にオプションがない場合を除いて、SQLでのループは回避する必要があります。

于 2012-05-02T09:28:34.260 に答える