14586


**前提**  
**A(人)テーブル … b_idカラム、都道府県カラム**  
**B(マスター)テーブル … idカラム、都道府県カラム**

・AとBの関係は多対1  
・b_idカラムの中身は空  
・両テーブルの都道府県カラムには、神奈川県などの文字列が格納されています

・b_idカラム、idカラム … int  
・都道府県カラム … varchar

* * *

**やりたいこと**  
・ABテーブルの都道府県カラム内容(の文字列)が一致していたら、Aテーブルのb_idカラムを、Bテーブルのidカラムの値で上書き更新したい

・どうすれば良いでしょうか？

ALTER TABLE B.b_id？？？


CC BY-SA 3.0
2015-08-18T09:45:58.123
14582
2015-08-18T13:41:33.520
7886
question
mysql
MySQL ／ 条件一致していたら、指定カラムのDB値そのものを、別テーブルのカラム値で、上書き更新したい


<http://dev.mysql.com/doc/refman/5.5/en/update.html>  
によると、

[code]

    UPDATE A,B SET A.b_id = B.id where A.pref = B.pref;
    
[/code]

のようですね、MySQLでは。  
老婆心ながら、この更新はAテーブルのほぼ全件に更新がかかり、A,Bテーブルがその間ロックされるでしょうから運用中にやれば運用に支障が出るでしょう。


CC BY-SA 3.0
2015-08-18T10:28:21.573
14586
2015-08-18T10:28:21.573
8136
14582
answer


トランザクションテーブル（Aテーブル）からマスタテーブル（Bテーブル）を作りたいとの事。  
Update文の文法は、先の方の回答の通りかと思いますが、Aテーブルの id カラムと都道府県カラムの組み合わせは一意の前提なんでしょうか？  
人テーブルとかかれているので、データを追加していくテーブル（トランザクション）に見えますが、その組み合わせが一意でないと、Aテーブルのデータによって、マスタが更新されることになりますが、それはそれでいいのですか？  
また、バッチ的に実行するにしても、結果が安定しないと思われます。


CC BY-SA 3.0
2015-08-18T13:41:33.520
14598
2015-08-18T13:41:33.520
10937
14582
answer