• 締切済み

updateができない。

mysql-4.1.11を使っています。 ひとつのDBの中にtableがふたつあります。仮にtable1,table2とします。 このふたつのテーブルについて select * from table1,table2 where table1_col1=table2_col1; というふうにすると、table1_col1とtable2_col1の値が等しいものだけ抽出してくれます。table1_co1,table2_col2というのはそれぞれのテーブルのカラムのひとつです。 しかし、同じ条件で update table1,table2 set table1_col2="A" where table1_col1=table2_col1; という命令を実行しても 「Query OK, 0 rows affected (0.00 sec) Rows matched: 0 Changed: 0 Warnings: 0」 というメッセージが出るだけでtable1_col2の値が変わりません。本当なら3つのデータが変わるはずです。 命令の仕方がおかしいのでしょうか? ほかにおかしなところがあるのでしょうか? よろしくおねがいします。

みんなの回答

  • tak2003
  • ベストアンサー率32% (174/540)
回答No.1

table1_col1=table2_col1に該当するデータがないのでは? 命令がおかしいならば他のメッセージが出るはずですので、 値をよく確認してください。

ma-chan45
質問者

お礼

ありがとうございます。 でもtable1_col1=table2_col1に該当するデータは間違いなくあります。 とりあえずサブクエリで回避することができました。↓です。 update table1 set table1_col2="A" where table1_col1 in (select table2_col1 from table2); これでできたので、これを使おうと思います。 でも、テーブルを代えると update table1,table2 set table1_col2="A" where table1_col1=table2_col1; でうまくいく場合もあるのです・・・・・。なぜなのでしょう?

関連するQ&A