みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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つのデータが変わるはずです。

命令の仕方がおかしいのでしょうか?
ほかにおかしなところがあるのでしょうか?
よろしくおねがいします。

投稿日時 - 2005-10-11 11:21:49

QNo.1706207

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

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

投稿日時 - 2005-10-11 14:44:36

お礼

ありがとうございます。
でも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;
でうまくいく場合もあるのです・・・・・。なぜなのでしょう?

投稿日時 - 2005-10-11 18:10:22

あなたにオススメの質問