MySQLのupdateでselectした結果を使う方法 サブクエリで自己テーブル更新も可能
  • facebookページ
  • twitterページ
  • 2020.01.22

    MySQLのupdateでselectした結果を使う方法 サブクエリで自己テーブル更新も可能

    MySQLでselect文の結果を使ってupdateする方法についてまとめています。

    以下、データベースとして、MySQLのサンプルデータベースEmployeesを使っています。

    単純な値参照は、update文のみで実行可能

    departments(部署)テーブルをコピーしたdepartments2テーブルに対して、departmentsテーブルの値を参照してupdateを実行するサンプルです。

    departments2テーブルは、d001←no name、d002←no name2、d003←no name3と値を書き換えてあります。

    以下のSQLを実行します。

    departments2テーブルのdept_nameを、同じdept_noのdepartmentsテーブルのdept_nameで更新するというSQLです。

    実行するとこうなります。

    departmentsテーブルは参照にのみ使っていて何も更新されません。update文には、複数のテーブルを指定することができ、単純な参照であればupdate文だけでselect&updateのような処理が実行できるんですね。

    サブクエリでselectした値を使ってupdate

    複雑なselect文の結果をupdateの値として使うにはサブクエリを使います。

    上記SQLを実行すると、departments2のdept_noがd001のレコードに、employees(雇用者テーブル)のemp_no(社員番号)が10001のレコードのfirst_name(姓名の名)を挿入します。

    実行すると、こうなります。

    d001のdept_nameが「Georgi」で更新されました。

    なお、以下のように記述しても同じ結果になります。

    同じテーブルの値をselectしてupdateする

    更新対象のテーブル自体の値を使った更新も可能です。

    上記SQLは、departments2のdept_nameの後ろに「1」をつけて更新します。

    実行するとこうなります。

    まとめ

    ポテパンダの一言メモ
    • 単純な値参照はupdate文に参照先テーブル名を合わせて記述すれば可能
    • select文の結果をupdate文で使うには、サブクエリを利用する
    • 同じテーブルの値をselectしてupdateすることも可能

     



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

    この記事をシェア

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









    ABOUT US

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

    READ MORE