複数の値を一度にUPDATEするには?

このQ&Aのポイント
  • 既存テーブルから複数存在するデータのみを一度に、別テーブルにUPDATEする方法を教えてください。
  • AテーブルとBテーブルの列の構成は同じで、fieldIは同じ値が格納されていますが、idは異なります。
  • 太郎と花子の値を同時にUPDATEするための方法を教えてください。
回答を見る
  • ベストアンサー

複数の値を一度にUPDATEするには?

既存テーブル(Aテーブル)から複数存在するデータのみを一度に、別テーブル(Bテーブル)にUPDATEしたいのですが可能でしょうか? 例 Aテーブル(idはAIです) id fieldI fieldII 1  太郎   1 2  花子   1 3  花子   1 4  一郎   1 5  太郎   1 Bテーブル(idはAIではない) id fieldI fieldII  10  太郎   2  ← ここを1から2へ変更 12  花子   2  ← ここを1から2へ変更 上記のようにAテーブルとBテーブルの列の構成は同じで、 fieldIは同じ値が格納されていますが、idは違っています。 上記のような場合、太郎と花子を同時にUPDATEするにはどのようにすれば、 良いのでしょうか? どなたか、お知恵をお貸し下さいませ。 DB:Mysql5以降 宜しくお願いします。

  • MySQL
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

質問の内容だけではなぜ1から2に更新するのか今ひとつわかりません。 AテーブルのfieldIが共通するレコードの件数で更新するというなら update Bテーブル B inner join ( select fieldI, count(*) cnt from Aテーブル group by fieldI ) A on B.fieldI=A.fieldI set B.fieldII=A.cnt;

ringo95123
質問者

お礼

ありがとうございました!! 上手く動作させることができました。 あれこれ、調べて試してみたのですが、 なかなか思うようにならず、途方に暮れてました。 助かりました。

関連するQ&A

  • MySQL 複数テーブルのフィールドにUPDATE

    よろしくお願いします。 PHP5、MySQL5、 PEAR DB、Smarty にて開発しております。 標題にもありますように、LEFT JOINを使ってUPDATEできる方法を探しております。 ●Aテーブル(親) id | del_flag ----------------- 1 | 0 2 | 0 3 | 0 4 | 0 ●Bテーブル id | del_flag ----------------- 1 | 0 3 | 0 4 | 0 ●Cテーブル id | del_flag ----------------- 1 | 0 2 | 0 3 | 0 4 | 0 上記のような3つ、またはもしくはそれ以上テーブルがあったとします。 そこで、 Aテーブルの id 2 のdel_flagを1 とアップデートしたときに、 同時に全てのB、Cのテーブルの id 2 のdel_flagも 1 としたく思います。 Bテーブルには、id 2 が存在しないため、結果的にはCテーブルだけが更新されますが、 A、B,Cともに同一のid値 がある場合も考慮して、 アップデートしたいと思います。 そこで、PHP内で、一つ一つのテーブルを地道にアップデートすることは可能だとおもいますが、 一度のSQLでdel_flagの値を1とできる方法はございませんでしょうか? お手数ですが、 具体的なクエリを書いていただけると、大変助かります。 いろいろ調べましたが、なかなか上手くいかず・・・・。 よろしくお願いいいたします。  

    • ベストアンサー
    • MySQL
  • SQL文で他テーブルの件数も同時に求めたい

    SQL文について教えてください。(DBはSQLサーバー2000です。) 以下のように2つのテーブルがあります。Aテーブルのフィールド項目の抽出と、AテーブルのIDフィールドと同じ値のBテーブルの件数を同時に抽出したいのですが、どのように書いてよいか分かりません。恐れ入りますが、教えていただけないでしょうか? テーブルA  ID name Age -------------- 1  太郎 20 2  二郎 35 3 花子 26 テーブルB ID memo ------------------ 1  私は男です 1  東京に住んでます 2  友達が3人います 3 私は彼氏がいます 3  先日TDLに出かけました。 3  ランチはカレーでした。 要約すると、Aテーブルの全情報とテーブルBの件数を同時に抽出したいのです。以下のようなイメージです。 name Age テーブルB件数 ------------------- 太郎、20、 2 二郎、35、 1 花子、26、 3 よろしくお願い致します。

  • 2つのテーブルのupdate

    AtableというテーブルとBtableというテーブルのTypeフィールドをupdateする場合、テーブルが異なるごとにmysql_queryを使っているのですが、この場合、ひとつにまとめられないものでしょうか? このような使用方法が通常ですか? よろしくお願い致します。 $ASQL = "update Atable set Type = 1 where id = $a"; $BSQL = "update Btable set Type = 1 where id = $b"; mysql_query($ASQL); mysql_query($BSQL);

  • VisualBasicでデータ検索プログラムを作成しています。

    VisualBasicでデータ検索プログラムを作成しています。 データ検索の速度で困っています。 データA 太郎,いちご,スイカ 花子,スイカ,トマト 一郎,バナナ,りんご  ・  ・  ・ データB いちご,100 スイカ,200 トマト,150 バナナ,350 りんご,280  ・  ・  ・ このようなデータでそれぞれが5万件程度ある場合、 1、配列を使ってメモリにそれぞれのデータを格納してFor文+if文で検索する 2、それぞれのデータをDBに入れSelect文で検索する のいずれの処理が高速にできますか? 求めたいものは、太郎、花子、一郎・・・のそれぞれの金額です。 やはり断然DBのほうが早いのでしょうか?

  • 別テーブルの値をsetしてupdateしたい

    テーブルAとテーブルBで、idが一致したデータのみ、 テーブルAのフィールドにテーブルBの値を入れたいです。 tera termを使用して、 UPDATE tableA as a, tableB as b SET a.value = b.value WHERE a.id = b.id 上記のupdate文を流すと一行目の[as a]からsyntaxエラーが出ます。 ERROR 1064: You have an error in your SQL syntax near 'as a, tableB as b SET ~' at line 1 書き方が悪いのでしょうか? どのように記述すればb.valueをa.valueにsetできますか?

    • ベストアンサー
    • MySQL
  • Excelで集計の方法

    A列に名前が入っています。 B列に数字(個数)が入っています。 A列にある名前は重複しています。(同じ名前が何回も出現します。) このA列にあるリストを同じシートのD列に表示し、更にE列に名前ごとの合計を出したいのですが、どうすればよいでしょうか? つまり A列   B列 太郎   50 一郎   20 花子   30 太郎   40 花子   50 一郎   50 太郎   20 これを 太郎=110 一郎=70 花子=80 としたいのです。 よろしくお願いします。

  • Accessで相続関係図を作りたい

    Accessで相続関係図を作りたいと思っております。 例えば、以下のようにテーブルにデータが入力されたら、 被相続人   相続人   続柄 ○○太郎   ○○花子  妻 ○○太郎   ○○一郎  子 ○○太郎   ○○次郎  子 次のようにレポートが表示されるようにしたいと思います。    ○○花子 ━┳━ ○○太郎          ┃      ┏━━━┻━━━┓    ○○一郎     ○○次郎 これが子供が3人だった場合には、以下のレポートに自動的に切り替わるようにしたいと思います。    ○○花子 ━┳━ ○○太郎          ┃      ┏━━━╋━━━┓    ○○一郎 △△良子 ○○次郎 レポートについては、子が2人用、3人用・・と、様々なパターンのテンプレートを用意しておき、そこに情報が格納されるようにしておこうと思っておりますが、○○太郎の相続情報をレポートで表示したいと操作すると、自動的に適切な形式のレポートが表示されるようにしたいと思っております。 レポートのソースをパラメータクエリにして、何とかならないかと悪戦苦闘しておりますが、なかなかうまくいきません。 上記について、こうすればうまくいくのでは?など、ご助言いただけないでしょうか。 よろしくお願いします。

  • 一覧の表示で名前をデータ数を表示したいのですが…

    お世話になります。 度々申し訳ないのですが、質問させてください。 現在mysqlに格納したデータの一覧を表示するページを作っているのですが、表示結果が思うようにいかず困っています。 環境:Mysql 5.1.22-rc,PHP  5.2.5 データベース:test01 main -------------------------------------------------------- id name kana 1 太郎 たろう 2 次郎 じろう 3 花子 はなこ -------------------------------------------------------- sub2 -------------------------------------------------------- id a_sakuhin   title 1 data_1   青空   1 data_2   夕日 1 data_3   流星   3 data_1   町並み 3 data_2   列車   -------------------------------------------------------- というテーブルがあります。 それを一覧表示で ・太郎 (3) ・次郎 (0) ・花子 (2) という具合にしたいのですが、どうしても()の中が全件合わせた結果になり ・太郎 (50) ・次郎 (50) ・花子 (50) という様になってしまうのです。 どういったsql文を書けばよいのかアドバイスを頂けると嬉しいです。 よろしくお願いいたします。

  • 複数テーブルから値を連結出力するSQLについて

    以下の様な3つのテーブルがあり、それぞれのテーブルを連結して結果を取得したいと思っております。 この場合のSQL文をご教授いただけないでしょうか? 拙い説明でお分かりに難いかと思いますが、何卒、宜しくお願いします。 ●テーブル T1(科目テーブル) 科目ID, 科目名 T2(生徒テーブル) 生徒ID, 生徒名 T3(科目選択テーブル) 科目ID, 生徒ID(科目ID, 生徒IDで連結キー) ●期待出力結果イメージ ※例1)生徒ID=1の場合 科目ID | 科目名 | 生徒ID | 生徒名 ------------------------------------- 1 | 国語 | 1 | 山田太郎 ------------------------------------- 2 | 算数 | 1 | 山田太郎 ------------------------------------- 3 | 理科 | null | null ------------------------------------- 4 | 社会 | null | null ------------------------------------- 5 | 英語 | 1 | 山田太郎 ※例2)生徒ID=2の場合 科目ID | 科目名 | 生徒ID | 生徒名 ------------------------------------- 1 | 国語 | null | null ------------------------------------- 2 | 算数 | null | null ------------------------------------- 3 | 理科 | null | null ------------------------------------- 4 | 社会 | null | null ------------------------------------- 5 | 英語 | 2 | 鈴木花子 ●出力条件 科目テーブルの科目ID, 科目名は全て表示する。 T3(科目選択テーブル)に存在する生徒IDがあれば、その生徒ID、生徒名を表示する。 存在しない場合は、それぞれ「null」として表示する。 出力は生徒IDを条件とする。 何卒、宜しくお願いします。 ※因みに使用DBはMySQL5.1.44です。

    • ベストアンサー
    • MySQL
  • アクセス:文字レコードの集計をクエリで次のようなことを。

    こんにちは。アクセス初心者です。よろしくお願いします。 テーブル、もしくはクエリで次のようなものがあるとします。 id  氏名       A     B     C    D  ・・・ 28 山田 太郎  ○○ 88 海川 花子      △△ 28 山田 太郎          □□ 28 山田 太郎             △□ 88 海川 花子 ×× を id 氏名      A    B    C  D ・・・ 28 山田 太郎  ○○      □□ △□ 88 海川 花子  ××  △△ のようにまとめるクエリでの加工は可能でしょうか? 前提として、1レコードにid、氏名のほかは一つのフィールドを選んで入力することとしています。 よろしくお願いします。