skillup

技術ブログ

Database

SQL 更新系に関して

投稿日:

SQL実践入門、残り2章になりましたが、いやーむずいっす。

今回は9章を進めていますがSQLはもともと検索を主な用途として発展したため、SELECT文の使用がメインになります。

ですが、UPDATE文などでもSELECTをうまく利用することで効率的なSQLを書くことができます。

例えば下記のようなテーブルがあったとします。

テーブル名 omittbl

keycol | seq | val
———-+—–+—–
A | 1 | 50
A | 2 |
A | 3 |
A | 4 | 70
A | 5 |
A | 6 | 900
B | 1 | 10
B | 2 | 20
B | 3 |
B | 4 | 3
B | 5 |
B | 6 |

紙のデータだと割とよくあるパターンだと思いますが、直前と同じデータがあった場合、省略して書かなかったりします。

例えば A|2 は直前と同じですので値は50 A|5は70になります。

これを埋める場合、サブクエリを使います。

ステップとしては

まずvalがnullののレコードをベースに考え、nullでないseqを求める

これがスタートになります。

こちらを求めたのが下記のSQLです。

出力結果は下記になります。

kara_seq | not_kara_seq
———-+————–
2 | 1
3 | 1
5 | 4
3 | 2
5 | 4
6 | 4

 

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

論理設計のグレーノウハウ サロゲートキー

前回まではアンチパターンやバッドノウハウについて学習してきましたが、今回はグレーノウハウについて特集します。 グレーノウハウとは読んで字のごとくホワイトともブラックとも言えないという手法ですね。 つま …

no image

論理設計のアンチパターン その2

今回は論理設計のアンチパターンの続きです。 今までに比べると何も意図がないというものではなく、パフォーマンスを考えて設計されているようなものが多いです。 ただし、中には絶対に許されないタイプのものもあ …

no image

正規化について&EXTRACT

Contents1 正規化とは?2 第一正規化3 SQLネタ EXTRACT 正規化とは? 正確な定義は難しいですが、8割ぐらいあっている定義としては「適切なテーブルに分割すること」です。※ただし正確 …

no image

HAVING句について

本日はHAVINGについて。 かろうじて用法はしっており、たまに使うこともありますが、あまりしっかり理解しているとはいえない状況ですので、掘り下げてみようと思います。 WHEREとは違い、抽出した結果 …

no image

SQLのチューニングに関して

ここ2か月ぐらいはSQLの本でがりがり勉強してきましたね。当然復習も必要かと思いますが、だいぶいろんなことを覚えたなあという気がします。 一番勉強になった本はもちろん「達人に学ぶ SQL徹底指南書」と …