• ベストアンサー

SQLが組めません…

大変恥ずかしい話ですが恥をしのんでHelpさせていただきます。 例えばテーブルTESTに項目がCODE,NAMEとあったとして NAMEの内容がかぶっている項目が有ったら 大きいCODEの方を小さいCODEの内容に上書きするSQLを組みたいのです ex) CODE NAME --------- 0001 AAAA 0002 AAAA 0003 BBBB 0004 CCCC 0005 CCCC を以下のような実行結果にしたい ex) CODE NAME --------- 0002 AAAA 0002 AAAA 0003 BBBB 0005 CCCC 0005 CCCC どなたかお応えください お願いします。。。 使用しているのはORACLE9iです。

質問者が選んだベストアンサー

  • ベストアンサー
  • muyoshid
  • ベストアンサー率72% (230/318)
回答No.2

こんにちわ。 Oracle8i R8.1.7 で確認してみました。 NAME が重複してレコードも更新しますが、これでどうでしょう? SQL> select * from test; CODE NAME ------ ------ 0001 AAAA 0002 AAAA 0003 BBBB 0004 CCCC 0005 CCCC SQL> Update test t1 set code =    (select max(code) from test t2 where t1.name = t2.name); 5行が更新されました。 SQL> select * from test; CODE NAME ------ ------ 0002 AAAA 0002 AAAA 0003 BBBB 0005 CCCC 0005 CCCC

masaichi1212
質問者

お礼

完璧です! どうもありがとうございました!! まだSQLの知識が浅いのでどうも出来そうで出来ないで悩んでいました 本当にありがとうございました

その他の回答 (1)

  • bobble
  • ベストアンサー率34% (111/323)
回答No.1

こんにちわ。 ちょっと自信がないですが・・・ こんな感じでいけると思います。 select b.code as code, a.name as name from table a, (select max(code) as code, name from test group by name) b where a.name = b.name

masaichi1212
質問者

補足

ご返答ありがとうございます。 確かに私の希望した通りに出ました。 …が、、、大変申し訳ないのですが、 出力するだけではなく、実際にデータを更新してしまいたいのです。 すみません、私の説明不足でした。 教えていただいたSQLを元に自分でも頑張ってみます。 もしお時間あるようでしたらもう一度一緒に考えていただけると幸いです。 bobbleさんありがとうございました

関連するQ&A