- - PR -
レコードに番号を割り振りたい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-07-27 16:11
SQL文でテーブルを作成しています。
ーーーーーーー 品名コード|品名 ーーーーーーー null |品名A null |品名B null |品名C . . . 現在上記のような状態なのですが ーーーーーーー 品名コード|品名 ーーーーーーー 1 |品名A 2 |品名B 3 |品名C . . . 上記のように品名コードに番号を割り振っていくSQL文は、どうすれば良いのでしょうか? 初心者質問で申し訳ありませんが、どなたかお答えなりヒントなり頂けると幸いです。 [ メッセージ編集済み 編集者: 未記入 編集日時 2007-07-27 16:12 ] | ||||
|
投稿日時: 2007-07-27 16:21
レコードをひとつずつ更新していくしかなさそうですね。
件数が多い場合、私なら、全削除して入れ替えるのを選ぶと思います。 | ||||
|
投稿日時: 2007-07-27 16:36
Edossonさん返答ありがとうございます。
やはりひとつずつ更新していくしかないのでしょうか? 何か割り振っていくSQL文があった覚えがあるのですが・・ | ||||
|
投稿日時: 2007-07-27 17:11
環境が書かれていないので分からない、かつ
の意味がよく分かりませんが・・・。 (新規にテーブル作成? or 存在するテーブルのデータを更新?) SQLServerなら、マニュアルでIDENTITY関数を調べると解決に近づくと思います。 | ||||
|
投稿日時: 2007-07-27 17:16
自動的に番号を生成する機能(標準SQLでは、シーケンス)は、多くのRDBMSで
実装されていますが、独自仕様で実装しているものが多いです。 そのため、使用しているRDBMS名、バージョンを明記しなければ、誰も適切な提案を できません。 品名でソートして、単純に番号を振るので良いのですか? | ||||
|
投稿日時: 2007-07-27 17:27
UPDATE文で基本的に1行ずつ更新になりますが、 なにか問題でも? | ||||
|
投稿日時: 2007-07-27 17:44
すでにあるテーブルをいじる話ですよね?どのDBかわからないのでなんともいえませんが、
SQL SERVERなら例えば、 UPDATE 品名テーブル SET 品名コード = (SELECT MAX(品名コード) FROM 品名テーブル ) + 1 WHERE 品名 = (SELECT TOP 1 品名 FROM 品名テーブル WHERE 品名コード IS NULL ) これを1回ずつながすとか、いろいろ工夫すればいいでしょう。 #あまり検証してないのであしからず #例えば上記の場合は品名がかぶるとだめです。あと最初にどっかに品名コードをせっとしとかないとだめです。 ↓オラクルならこれ一発でしょうね [ メッセージ編集済み 編集者: べる 編集日時 2007-07-27 18:45 ] | ||||
|
投稿日時: 2007-07-27 17:53
僕のところのデータベースでは、次のUPDATE文だけでできましたよ。
update 品目テーブル set 品名コード=rownum; |
1