- ベストアンサー
UPDATE文のエラー直せますでしょうか?
テーブル A と テーブル B は同じ構造です。 A のレコードを B のレコードで更新するにはどうすれば良いのでしょうか? UPDATE a Set( a.id = b.id, a.dat = b.dat ) FROM a INNER JOIN b ON a.id = b.id #1064 - You have an error in your SQL syntax; the right syntax to use near '( a.id = b.id, a.d = b.d ) FROM a INNER JOIN b ON a.id = b.id' at line 1 MySQL 5.1.33 CREATE TABLE `a` ( `id` INT NOT NULL , `dat` INT , PRIMARY KEY ( `id` ) );
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
UPDATE a, b Set a.id = b.id, a.dat = b.dat where a.id = b.id だとどうなります?
その他の回答 (2)
- yambejp
- ベストアンサー率51% (3827/7415)
UPDATE a INNER JOIN b ON a.id = b.id SET a.dat=b.dat でいけませんか?
- nda23
- ベストアンサー率54% (777/1416)
UPDATE文にFROMは使わないのでは? UPDATE a INNER JOIN b ON a.id = b.id Set a.id = b.id, a.dat = b.dat これだと、どうでしょう。
お礼
ありがとうございます! しかし、 0 行変更しました。 なぜか、テーブル a のレコードが更新されません。 ところが、何でこんなに難しいの??と思ってテーブル作成からやり直したら、大成功でした! しかも、皆様のご回答、全て大成功でした!! bin-chanさん、yambejpさんも含めて皆様大正解だったというわけです。 (yambejpさんのご回答も、最初に実行した時は同様の0行変更でした) 申し訳ありませんでした。 原因は全くわかりませんが、bテーブル作成するときに、 create table b as (select * from a); としたせいかもしれません。(インデックスが張られていなかった) 2回目はcreate table をコピーして b テーブルを作成しました。 (違いはそれくらいしか思い浮かびませんが、実際の原因はわかりません) 皆様にお礼したいのですが、それも不可能なので、 圧倒的最速で教えていただいた bin-chanさん、 私にとってもっとも理解しやすかったコードの yambejpさんとさせていただきました。 nda23さん、本当にすみません。 皆さん本当にありがとうございました。
補足
ありがとうございます! 0 行変更しました。 なぜか、テーブル a のレコードが更新されませんでした。 もちろん、b.dat と a.dat の値は異なります。