- - PR -
SQLで教えてください
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-05-16 00:44
SQLでわからない事があるので、皆さんお知恵をお貸しください。
2つのテーブルがあります、TABLE_AとTABLE_B、それぞれkey1,key2,key3,seqが主キーです。 TABLE_A key1,key2,key3,seq,countA AAAAA,BB,CC,1,11 AAAAA,BB,CC,2,22 AAAAA,BB,CC,3,33 DDDDD,EE,FF,1,44 DDDDD,EE,FF,2,55 DDDDD,EE,FF,3,66 DDDDD,EE,FF,4,77 TABLE_B key1,key2,key3,seq,countB AAAAA,BB,CC,1 AAAAA,BB,CC,2 AAAAA,BB,CC,3 AAAAA,BB,CC,4 AAAAA,BB,CC,5 AAAAA,BB,CC,6 DDDDD,EE,FF,1 DDDDD,EE,FF,2 で、TABLE_BのcountBの項目をTABLE_Aから更新したいのですが、以下のような条件があります TABALE_Bで更新する行は、key1,key2,key3が同じ値でseqが一番大きいレコードのみ1行 countBに更新する値は、TABLE_Aで同じキー(key1,key2,key3)でseqが一番大きいレコードのcountAの値 以下が更新後のTABLE_Bの形です。 TABLE_B key1,key2,key3,seq,countB AAAAA,BB,CC,1 AAAAA,BB,CC,2 AAAAA,BB,CC,3 AAAAA,BB,CC,4 AAAAA,BB,CC,5 AAAAA,BB,CC,6,33 DDDDD,EE,FF,1 DDDDD,EE,FF,2,77 この様なことをするUPDATE文を考えているのですが、なかなか思いつきません... わかる方がいらっしゃれば、お教え願えないでしょうか。 よろしくお願いいたします。 | ||||
|
投稿日時: 2008-05-16 01:02
RDBMS名とバージョンを明記してください。
| ||||
|
投稿日時: 2008-05-16 10:16
oracle前提
ちっと脳内だけでやったので きちっと検証してね
| ||||
|
投稿日時: 2008-05-16 19:53
Oracle10gで作ってみました。
| ||||
|
投稿日時: 2008-05-19 14:55
> 明智重蔵さんへ
記憶違いでなければ「BYPASS_UJVC」ヒントはインラインビューのSELECT句に使うのではなく、UPDATE句の後ろにつけるのではないでしょうか。 | ||||
|
投稿日時: 2008-05-19 19:17
どっちでもいいみたいですねぇ
BYPASS_UJVCヒントは、マニュアルにのってないので真相は分かりませんが・・・
| ||||
|
投稿日時: 2008-05-20 18:08
そうでしたか。完全に思い込んでいました。失礼しました。
| ||||
|
投稿日時: 2008-05-20 19:45
メンテナンス考えたら
ベタな感じで作ったほうがよいのでは。。。。 (まあ、勉強または作り逃げならOK。。。) |
1