none
NULL値以外のUPDATE RRS feed

  • 質問

  • お世話になります。
    以下のようなテーブルがあります。
    URIAGE_D(TANTOID),TANTO_M(TANTO_ID,MGRID)
    UPDATE文において、TANTO_MのMGRIDをURIAGE_DのTANTOIDをキーにMGRIDの番号に書き換えます。
    ただし、MGRIDにはNULLがありますのでNULL以外の値を更新します。
    文は
    UPDATE URIAGE_D
    SET URIAGE_D.TANTOID = (SELECT MGRID FROM TANTO_M
                                    WHERE TANTO_M.MGRID IS NOT NULL)
    です。ご不明な点がございましたらよろしくお願いします。
    2006年9月26日 2:03

回答

すべての返信

  • もう少し具体例を挙げてもらえませんか?
    これだとまったくイメージがわきません。
    実際にどんな値が入っていて、どういう結果を期待されているのでしょうか?
    あと、突然 TASHIRO_URIAGE_D というテーブルが出てきますが、これの構造は URIAGE_D テーブルと同じなのでしょうか?
    2006年9月26日 3:05
  • すみません、質問のURIAGE_Dは修正しました。

    テーブル内容は、

    テーブル名 TANTO_M                URIAGE_D                    URIAGE_D

    項目名      MGRID                    TANTOID                      TANTOID

                   NULL                          1                                 1(NULLなのでそのまま)

                   NULL                          2                                 2(NULLなのでそのまま)

                      6                 参照      3                更新            6

                      7                 →         4          →              7

                      8                             5                                 8

     

    となるようにしたいのです。

    尚、TANTO_Mの項目名はMGRID,TANTOIDで、URIAGE_DはTANTOIDのみです。

    両テーブルにはTANTOIDで結合しています。

    すみませんがよろしくお願いします。

    2006年9月26日 4:14
  • update u set
      u.TANTOID = t.MGRID
    from URIAGE_D u
    inner join TANTO_M t on u.TANTOID = t.TANTOID
    where t.MGRID is not null

    こんなかんじだろうかね

    2006年9月26日 4:34
  • できました、ありがとうございます。
    2006年9月27日 3:41