3

id = @id の列 a、b、c、d を持つ行を取得し、d が異なることを除いて a、b、c に同じ値を持つ新しい行を挿入するストアド プロシージャを作成しようとしています。

この場合、約 50 列ありますが、異なる必要があるのは 1 列だけです。

4

2 に答える 2

5

dが であり、にあるものの代わりに、INTたとえば、挿入したい場合、次のようになります。15dbo.oldtable

INSERT dbo.newtable(a,b,c,d) 
  SELECT a,b,c,d = 15
  FROM dbo.oldtable
  WHERE id = @id;

変数からのものである可能性が高いため、次のようになります。

INSERT dbo.newtable(a,b,c,d) 
  SELECT a,b,c,d = @whatever
  FROM dbo.oldtable
  WHERE id = @id;

申し訳ありませんが、「d を除くすべての列」と言う省略表現はありません...それらを個別にリストする必要があります。タイピングに問題がある場合は、簡単に対処する方法があります。オブジェクト エクスプローラーを開き、サーバー、データベース、テーブル、および問題のテーブルを展開してから、列ノードをクエリ ウィンドウにドラッグします。

ここに画像の説明を入力

d次に、そのリストから列を削除するだけです。

于 2012-05-21T17:41:54.260 に答える
1

これが役立つかもしれません-

INSERT INTO tablename
(a, b, c, d)
VALUES
(SELECT col1, col2, col3, 'newcolvalue'
 FROM tablename
 WHERE id = @id);
于 2012-05-21T17:43:29.597 に答える