- ベストアンサー
別テーブルの値を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できますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#3ですが、一応対処法 create table tableA(id int not null primary key,value int); insert into tableA values(1,10),(2,20),(3,30),(4,40); create table tableB(id int not null primary key,value int); insert into tableB values(1,100),(3,300),(5,500); ここまで準備 create temporary table temp select b.id,b.value from tableB as b inner join tableA as a on a.id=b.id; replace tableA select id,value from temp;
その他の回答 (3)
- yambejp
- ベストアンサー率51% (3827/7415)
MySQLのバージョンいくつですか? 古いと複数テーブルをからめたUPDATEはできないですよ
- yamada_g
- ベストアンサー率68% (258/374)
リファレンス(http://dev.mysql.com/doc/refman/5.1/ja/update.html)には >UPDATE items,month SET items.price=month.price >WHERE items.id=month.id; というサンプルが載っていますので、エイリアスを付けずに UPDATE tableA,tableB SET tableA.value = tableB.value WHERE tableA.id = tableB.id; とすればいいのではないでしょうか。
お礼
ありがとうございます。 tableB SET~からエラーが出ました。 2つめのテーブル名を正しく読めていないような…? バージョンの問題とかなんでしょうか。
- nora1962
- ベストアンサー率60% (431/717)
UPDATE tableA as a join tableB as b on a.id = b.id SET a.value = b.value ならいけると思う。
お礼
ありがとうございます。 やはり最初の[as~]からエラーになってしまいました。
お礼
回答ありがとうございます。 3.23.58でした。