【SQL】検索結果を基にした更新が行えるUPDATE JOIN句についてコードを踏まえて解説。
  • facebookページ
  • twitterページ
  • 2020.06.26

    【SQL】検索結果を基にした更新が行えるUPDATE JOIN句についてコードを踏まえて解説。

    SQL Serverでデータを更新する場合には、二通りの方法があります。

    一つは皆さんご存じの「UPDATE」。そしてもう一つが「UPDATE JOIN」を使った方法です。

    そこで今回はこの「UPDATE JOIN」を使った方法について解説してみたいと思います。

    UPDATE JOINと聞くと、学習段階の方にとっては何やら聞いたことのないワードに聞こえるかもしれませんが、今回もわかりやすく解説していきますので最後までお付き合いください!

    UPDATE JOINとは

    UPDATE JOINという言葉はあまり聞きなれないかもしれませんが、言い換えるならSELECTした結果を基にUPDATEするというようにも置き換えることが出来ます。

    INSERT文の「INSERT SELECT」は学習段階の方も聞いたことがあると思いますが、これのUPDATE版だと思ってもらって構いません。

    ただしJOIN句があるため、テーブルの連結を行う点では単純にSELECTではないことに注意してください。

    またUPDATE JOINには次のような特徴があります。

    • JOIN結果が0件の場合にはUPDATEされない
    • 複数行にわたりJOINされた場合、最初にJOINされた結果でUPDATEされる
    ポテパンダの一言メモ

    JOIN句には「INNER JOIN」と「LEFT(RIGHT) JOIN」がありますが、UPDATE JOIN内で使用するJOIN句によっては結果が変わってくるため、どのJOIN句を使うかの選定が必要不可欠となります。

    UPDATE JOINの記述方法

    それではUPDATE JOINの記述方法について見ていきましょう。

    UPDATE JOINは次のように記述します。

    基本的にはUPDATEの構造とよく似ていますが、SELECTではなくJOINを使います。

    JOINの記述に関しては今回の記事とは関係ないため割愛しますが、先ほども説明したようにUPDATEパートとJOINパートで分けて考えると非常にシンプルに理解できると思います。

    なお動作の順番としては次のような工程を辿っています。

    • 1. JOINl句でテーブルを連結させる
    • 2. 条件付きSELECTで目的のレコードを検索する
    • 3. UPDATE句で該当レコードを更新する

    UPDATE JOIN句の良いところは、わざわざ1行ずつUPDATEを回すことなく、一つのクエリで該当する全てのレコードを一度に書き換えることが出来る点です。

    コードの簡素化は、実運用後に変更作業が必要となった場合でも非常に少ない修正で済みます。

    確実に覚えるようにしましょう。

    UPDATE JOINのサンプルコード

    では実際にサンプルを使ってUPDATE JOINの動作を見てみましょう。

    今回のサンプルコード用テーブルは以下のようになっています。

    テーブル「sample_table_A」は親テーブルでスタッフの名前と健康診断の有無、テーブル「sample_table_B」は子テーブルで性別と受診日があります。

    今回のサンプルでは、テーブルを内部結合し”checkup_date”が「NULL」以外のスタッフの”medical_checkup”を”YET” → “DONE”に書き換えを行います。

    実行結果からstuff_idが「2」「4」「5」のmedical_checkupが”DONE”に書き換わっていることが確認できます。

    このように、UPDATE JOIN句を使用することで、任意の書き換えを一つのクエリで完結させることが可能となります。

    まとめ

    今回はUPDATE JOIN句についての解説を行いましたが、いかがでしたか?

    開発を行うにあたりデータベースの更新は頻繁に行うものですから、出来るだけクエリを簡潔に記述するように心がける必要があります。

    また、シンプルに記述することにより、実運用を開始した後で修正の必要が出た場合などにも、人的ミスの危険性を減らすことにも繋がります。

    学習中の方はこの記事をしっかりと読んで、こうしたクエリの使い方を出来るだけ多く学んでおきましょう。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE