- PR -

レコードに番号を割り振りたい

1
投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2007/04/09
投稿数: 21
投稿日時: 2007-07-27 16:11
SQL文でテーブルを作成しています。
ーーーーーーー
品名コード|品名
ーーーーーーー
null      |品名A
null      |品名B
null     |品名C
    .
    .
    .

現在上記のような状態なのですが
ーーーーーーー
品名コード|品名
ーーーーーーー
1     |品名A
2     |品名B
3      |品名C
    .
    .
    .
上記のように品名コードに番号を割り振っていくSQL文は、どうすれば良いのでしょうか?
初心者質問で申し訳ありませんが、どなたかお答えなりヒントなり頂けると幸いです。

[ メッセージ編集済み 編集者: 未記入 編集日時 2007-07-27 16:12 ]
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-07-27 16:21
レコードをひとつずつ更新していくしかなさそうですね。

件数が多い場合、私なら、全削除して入れ替えるのを選ぶと思います。
未記入
常連さん
会議室デビュー日: 2007/04/09
投稿数: 21
投稿日時: 2007-07-27 16:36
Edossonさん返答ありがとうございます。

やはりひとつずつ更新していくしかないのでしょうか?
何か割り振っていくSQL文があった覚えがあるのですが・・
nakaP
大ベテラン
会議室デビュー日: 2005/09/27
投稿数: 138
お住まい・勤務地: 高知
投稿日時: 2007-07-27 17:11
環境が書かれていないので分からない、かつ
引用:

SQL文でテーブルを作成しています。


の意味がよく分かりませんが・・・。
(新規にテーブル作成? or 存在するテーブルのデータを更新?)

SQLServerなら、マニュアルでIDENTITY関数を調べると解決に近づくと思います。
忠犬
大ベテラン
会議室デビュー日: 2006/05/01
投稿数: 109
投稿日時: 2007-07-27 17:16
自動的に番号を生成する機能(標準SQLでは、シーケンス)は、多くのRDBMSで
実装されていますが、独自仕様で実装しているものが多いです。
そのため、使用しているRDBMS名、バージョンを明記しなければ、誰も適切な提案を
できません。

品名でソートして、単純に番号を振るので良いのですか?
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2007-07-27 17:27
引用:

未記入さんの書き込み (2007-07-27 16:36) より:
Edossonさん返答ありがとうございます。

やはりひとつずつ更新していくしかないのでしょうか?
何か割り振っていくSQL文があった覚えがあるのですが・・



UPDATE文で基本的に1行ずつ更新になりますが、
なにか問題でも?

べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 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 ]
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2007-07-27 17:53
僕のところのデータベースでは、次のUPDATE文だけでできましたよ。

update 品目テーブル set 品名コード=rownum;
1

スキルアップ/キャリアアップ(JOB@IT)