- ベストアンサー
INSERT時に発番を行いたい
ATBLからBTBLへのINSERT時発番を行いたい <環境> SQLSERVER 2008 <ATBL> CD varchar(3) KEY NO int KEY NAME varchar(10) <BTBL> CD varchar(3) KEY NO int KEY NAME varchar(10) <BTBLのデータ> CD NO NAME 001 1 太郎 001 3 次郎 001 5 三郎 BTBLをATBLへINSERTしたいのですが、この時、NOを1から再付番したいのです。 INSERTクエリで一発で更新できますでしょうか? ご教授お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
row_numberで1からの連番ふれるよ INSERT INTO ATBL(CD, NO, NAME) SELECT CD, row_number() OVER(ORDER BY CD) AS NO, NAME FROM BTBL
その他の回答 (1)
- gokigen2525
- ベストアンサー率28% (2/7)
NOのデータ型のカラムにIDENTITY属性を付ければ自動採番されます。 (詳細は参考URLを参照) ただし、今後に使用で自由に採番できなくなって困るのであれば、 一旦ワーク用のテーブルを作成し <WK_TBL> CD varchar(3) not null, NO int IDENTITY (1, 1) NOT NULL , NAME varchar(10) これに一度INSERTした後、BTBLにコピーしてやるといいでしょう。 INSERT INTO WK_TBL(CD, NAME ) SELECT CD,NAME FROM ATBL; INSERT INTO BTBL(CD, NO,NAME ) SELECT CD,NO,NAME FROM WK_TBL; こんな感じで行けるはず
お礼
説明不足で申し訳ありません。 一時ワークが使用できないので困ってました。 お返事ありがとうございました。
お礼
見事にできました。ありがとうございました。