• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数テーブルの特定カラムを書き換えるSQL)

複数テーブルの特定カラムを書き換えるSQL

このQ&Aのポイント
  • 複数のテーブルにある特定のカラムの値を一括で書き換える方法について説明します。
  • テンパってしまっている中で、複数のテーブルから特定の条件に合致する行を検索し、カラムの値を書き換える方法を教えてください。
  • 複数のテーブルにある特定のカラムの値が0である行を検索し、その値を9に書き換える方法について教えてください。

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

  • ベストアンサー
  • s02152170
  • ベストアンサー率37% (43/114)
回答No.1

ごめんなさい、単純にこれでいいかと・・・ UPDATE KOKYAKU_TABLE SET id = 9 WHERE id =0; UPDATE TYUMON_TABLE SET id = 9 WHERE id =0; UPDATE GAZOU_TABLE SET id = 9 WHERE id =0; JOINしてやりたいならまた書きますが、 無難にこれでいいと思います。 質問を読み間違えてたらすいません。

ap3824
質問者

お礼

さっそくのご回答ありがとうございます。 ひとつづつやっていく感じなんですね。 質問の例では3つのテーブルでしたが、実際はテーブルは複数あって 昨日はテンパっててとりあえず、この場を急いでしのがなくては!みたいな感じでした。 間違ったSQLを発行するわけにもいかず、 場数を踏んでいない(経験・勉強不足)ので焦ってしまいました(反省 冷静に考えて なるほど、そうだよなー と納得いたしました。 昨日の件はおかげさまで、一時しのぎのあと問題対策をしまして解決いたしました。 ご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLのテーブルの特定カラムでループ検索?

    説明が苦手でご迷惑をおかけします。 [denwa_table] id name telno 1 田中 080888866XX 2 山田 090999988XX 3 佐藤 050333366XX このようなテーブルがあり、 別で取得した 「0125815846584123584090999988XX3254158912_3546842」 のような文字列にID何番の人の電話番号が含まれているか 検索するPHPを作成しています。 初心者なので、いろいろわからないのですが、 特に理解できていないのが複数行の配列の操作です。 $sql = "select telno from denwa_table"; 電話番号部分のカラムだけをとってきてとかやればいいのでしょうか? 検索する部分は strstr($data,$data2)を使ったらできそうですが、SQLからとってきた番号の配列をどうやってループさせたらいいのでしょうか? わからないことだらけなのですがよろしくお願いします。

    • ベストアンサー
    • PHP
  • コラムの値からコラム・テーブルを検索

    プライマリキーが様々なテーブルで別の名前で利用されていると、テーブル同士の関連の全てが把握できずに困っています。以前にコラム名からテーブルを検索する方法を質問したのですが、私が扱っているデータベースでは、プライマリキーがシステムの別の場所で少しだけ異なる名前で利用されていることが多いので、その方法では把握できない関連が出てきます。 具体的には、EMPLOYEES__KEYというEMPLOYEESテーブルのプライマリキーがPERSONALIZE_EMPOYEESというテーブルでPSNLZ_EMP__KEYという名前で使われている状況を考えていただきたいと思います。PSNLZ_EMP__KEYのコラムのレコードは全てEMPLOYEES__KEY内のデータからとられているとします。 以前にselect TABLE_NAME from USER_TAB_COLUMNS where COLUMN_NAME = 'EMPLOYEES__KEY' というSQLで特定のコラムを使っているテーブルを全てリストアップできると教えていただいたのですが、今回のケースでは、同じような内容のコラムなのですが名前が異なるため上記のSQLでは検索できないテーブルがある場合、それをどうやってとってきたらよいのかということです。 コラムの値にtaro, jiro, hanakoなどのようにテーブルまたはシステム内でユニークな値が指定されている場合、コラムの値を指定し、「その値が使われているコラム・テーブルを列挙せよ」というような命令を与えればよいのだということまでは分かりますが、どのようにSQLを書けば良いか教えてください。

  • 複数テーブルからデータを取り、updateする

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=1211685 にも同じような質問があったのですが、同様の処理でうまくupdateされません。分かる方がいらっしゃいましたら教えてください。 今、テーブルが2つ(table1、table2)があり、それぞれ2つのカラム(column1、column2)を持っています。ここで、それぞれのカラム2が等しく、カラム1が指定した値のレコードのみ値をupdateしたいです。 update table1 set column1 = 'AAA' from table1,table2 where table1.column2 = table2.column2 and table1.column1 = 'BBB' and table2.column1 = 'CCC' としたところ、「from table1,table2 where 」の辺りに間違いがあると表示されます。 上の例とどう違うのか分かりません。 よろしくお願いします。m(__)m

  • SQL 複数テーブルのupdate

    こんばんは。 複数テーブルの複数カラムをupdateしたいのですが、 うまくいかず困っています。 どなたか助けてください>_< テーブルA(tableA)のoptionAというカラムと、 テーブルB(tableB)のoptionBというカラムを両方更新したいんです。 やりたい内容のイメージとしてはこんな感じです↓ update tableA a, tableB b set a.optionA='OK', b.optionB='OK' where a.student_id=b.student_id and a.name='山田'; どなたかご指導お願いいたします。

  • 複数テーブルから全データ取得する際、同カラムあり

    SELECTで複数テーブルから、全カラム値を取得する際、同名カラムがあったとき、指定テーブルの値を取得したいのですが、どうすれば良いでしょうか? ◆前提 ・テーブル「r1」 ・テーブル「t1」 ・テーブル「u1」 ※「r1」「u1」には、同名カラム「z2」あり ◆やりたいこと ・条件一致する全てのデータを取得したい ・但し、「z2」カラムの値は、「r1」テーブルの値を取得したい ◆現状 $sql="SELECT * FROM (`r1`) JOIN `t1` JOIN `u1` ON `r1`.`tid` = `t1`.`tid` And`r1`.`uid` = `u1`.`uid`"; ◆疑問 3つのテーブルから条件一致するデータを全て取得しているのですが、 「r1テーブル」「u1テーブル」に同じカラム名(z2)があるためか、 取得結果のz2内容が、「u1テーブル」の「z2カラム」値となっています(多分…)。 この時、「r1テーブル」の「z2カラム」を取得するには、どうすれば良いでしょうか? (「r1テーブル」の「z2カラム」だけを単独で取得したいわけではなく、「SELECT * 」結果した際の「z2カラム」の値を「r1テーブル」のものにしたいです)

    • ベストアンサー
    • MySQL
  • 同テーブルで指定カラム値を相互更新(入替)したい

    下記のようなカラムがある時、DBから取得した値を、引数(並べ替え順)に応じて、(同じカラムを)更新するSQL文を教えてください ●カラム id1 sex1 age1 id2 sex2 age2 id3 sex3 age3 id4 sex4 age4  ●引数例 3 1 2 ※1番目が3、2番目が1、3番目が2 ・「1の数字が付いたカラムの値」を、「3の数字が付いたカラムの値」で更新したい ・「2の数字が付いたカラムの値」を、「1の数字が付いたカラムの値」で更新したい ●質問 ・MySQLだけで処理可能でしょうか? UPDATE テーブル名 SET id1=(SELECT id3 FROM テーブル名 WHERE id1=id3値),sex2=(SELECT sex3 ……; ・それとも、一度、全ての値を取得して、PHP等で処理するのでしょうか? UPDATE テーブル名 SET id1=id3値,sex1=sex3値,age1=age3値,id2=id1値 ……; ・他に何か良い方法はあるでしょうか(一旦別テーブル作成後、戻す等) ●環境 MySQL5.1

    • ベストアンサー
    • MySQL
  • 複数行の結果を単一列に連結(複数のテーブルを参照)

    psql (PostgreSQL) 7.3.4です。 困っています 以下のような【TABLE1】と【TABLE2】を TABLE1のt1tot2にで結合した結果を 【A.結果】のように★▲●の行を1行に表示させて取得したいのですがうまくいきません。 【TABLE1】 ID,ID_SUB, TYPE, VALUE A A1 t1 1 ★ A A1 t2 2 ★ A A1 t1 1 ▲ A A1 t2 3 ▲ B B1 t1 1 ● B B1 t2 3 ● 【TABLE2】 ID, TYPEV1 ,TYPEV2 ,Code A 1 1 AAA1 A 1 2 AAA2 ★ A 1 3 AAA3 ▲ B 1 3 BBB1 ●  TYPEV1=TABLE1のt1の値 TYPEV2=TABLE1のt2の値 【得たい結果】 ID, ID_SUB, TYPEV1, TYPEV2,Code A A1 1 2 AAA2★ A A1 1 3 AAA2▲ B B1 1 3 BBB1● 下記でTABLE1の2行を1行にまとめることができましたが、 問題のTABLE2との連結方法が分かりません。 select TABLE1.ID , TABLE1.ID_SUB , TABLE1.VALUE as t1 , (SELECT tbl1.VALUE FROM TABLE1 tbl1 where tbl1.TYPE=t2 and (TABLE1.ID , TABLE1.ID_SUB)=(tbl1.ID , tbl1.ID_SUB)) as t2 from TABLE1 where TABLE1.TYPE = t1 【結果】 ID ,ID_SUB , t1  ,t2 A A1 1 2 ★ A A1 1 3 ▲ B B1 1 3 ● 何か良い方法はありますでしょうか?

  • 複数カラムとの一致数の抽出ができません

    同一のデータベース内にある複数のカラムとの一致数を指定し、条件を満たしたものを抽出したいと思っていますが、SQL文が思いつかず困っています。どなたかよい知恵を授けてください。 [ID] N1 , N2 , N3 , N4 , N5 , N6 [01] 11 , 16 , 21 , 26 , 31 , 36 [02] 16 , 18 , 25 , 26 , 29 , 31 ↑というテーブルがあったとき、 例えば(11,16,21,25,31,34)という数値(A)を与えて、N1~N6に入っている数値と比較したとき、4個一致した行を抽出したい時はID=01を返し、3個一致した行を抽出したい時はID=02を変えすSQLはどういうものにすればいいでしょうか? 一致する個数のみに着目し、一致する数値はどれでもいいものとします。 ちなみに可能であれば、IDは300程あるので、できれば処理時間の関係上スマートにしたいと思っています。 ニュアンスとしては SELECT ID FROM table WHERE (SELECT count(*) FROM table WHERE (n1,n2.n3.n4.n5.n6) IN (11,16,21,25,31,34))=4; のようにしたいと思いましたがINの使い方の問題でしょうか、エラーが帰ってきます。

  • 共通のカラムを持つテーブルの外部キーの設定

    MySQLバージョン4.1.16を使用しています。 2つのテーブル「tbl1」と「tbl2」があり、 それぞれ共通のカラムを別のテーブル「common_tbl」に設定(正規化)し そのcommon_idを「tbl1」と「tbl2」が参照します。 例えば、「tbl2」にデータをinsertする場合に、 まず「common_tbl」からinsertして、そのinsert_idを取得(利用)して 「tbl2」にデータを挿入します。 たぶんこの場合のinsertはこのようなやり方だと思います(あまり自信ないなぁ・・・) 「tbl2」の行を削除した場合に、「common_tbl」の行も自動で削除させたいと思うのですが、 どのように外部キーを設定するのか(どこに設定するのか)が分かりません。 「common_tbl」に「tbl1」のtbl1_idと「tbl2」のtbl2_idを それぞれ持たせるのはたぶん違うと思いますし・・・ この場合の正しいテーブル構成を含めてアドバイスをお願いしたいです。 例: 「tbl2」のtbl2_idが2の行を削除したら、 「common_tbl」のcommon_idが3の行も削除したい(外部キーで自動的に) テーブル「tbl1」 +------+---------+----------+ | tbl1_id| tbl1_col1 |common_id | +------+---------+----------+ |  1  |   値1  |   1    | +------+---------+----------+ テーブル「tbl2」 +------+---------+----------+----------+ | tbl2_id| tbl2_col1 | tbl2_col2 |common_id | +------+---------+----------+----------+ |  1  |   値1  |   値1  |    2   | +------+---------+----------+----------+ |  2  |   値2  |   値2  |    3   | +------+---------+----------+----------+ テーブル「common_tbl」 +----------+---------+----------+ |common_id |   col1  |   col2  | +----------+---------+----------+ |  1     |   値1  |   値1  | +----------+---------+----------+ |  2     |   値2  |   値2  | +----------+---------+----------+ |  3     |   値3  |   値3  | +----------+---------+----------+

    • ベストアンサー
    • MySQL
  • 同じカラム直下に複数のレコードをinsert

    初心者です。 DBの同じカラム直下に複数のレコードをinsertさせるにはどうすればよいかどなたか教えて頂けますでしょうか。 以下は入力フォームで入力した複数の日付を確認画面で受け取ったものです。 <table> <th>休日年月日</th> <td>2016/9/12,2016/9/14,2016/9/20,2016/9/26,2016/9/28</td> </table> 日付が一つでしたらinsertは可能ですが、複数の場合はinsertできませんでした。 複数でinsertした場合のDBのイメージは以下の通りです。 holiday(カラム名) 2016/9/12(レコード1行目) 2016/9/14(レコード2行目) 2016/9/20(レコード3行目) 2016/9/26(レコード4行目) 2016/9/28(レコード5行目) どなたか教えて頂けたら幸いです。 よろしくお願い致します。

    • 締切済み
    • PHP