• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:別テーブルの値をsetしてupdateしたい)

別テーブルの値をsetしてupdateしたい

このQ&Aのポイント
  • テーブル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できますか?

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.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)
回答No.3

MySQLのバージョンいくつですか? 古いと複数テーブルをからめたUPDATEはできないですよ

labilion
質問者

お礼

回答ありがとうございます。 3.23.58でした。

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

リファレンス(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; とすればいいのではないでしょうか。

labilion
質問者

お礼

ありがとうございます。 tableB SET~からエラーが出ました。 2つめのテーブル名を正しく読めていないような…? バージョンの問題とかなんでしょうか。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

UPDATE tableA as a join tableB as b on a.id = b.id SET a.value = b.value ならいけると思う。

labilion
質問者

お礼

ありがとうございます。 やはり最初の[as~]からエラーになってしまいました。

関連するQ&A