-1

私は次のテーブルを持っています..

Table A:

id_A    col1
 1      val1
 2      val2
 3      val3
 ...    ....

Table B:

id_B   col2   
 4     val2    
 5     val3     
 6     null     
...    ...      

Table C:

id_A    id_B
 1      4
 2      5
 3      6
 ...    ....

私が必要としているのは、テーブル A からテーブル B にコピーしたいということです。それ、どうやったら出来るの?助けてください?

* *テーブル A id_A 1 をテーブル B に更新するにはどうすればよいですか? 表 C によると、id_A 1 == id_B 4,**

上記のクエリからの出力は...

表 B が更新されます...

表 B:

 id_B   col2   
     4     val1   // here is changed because updated from table A    
     5     val3     
     6     null     
    ...    ...   
4

2 に答える 2

1

これが機能する場合、それは簡単です

UPDATE tableB b, (SELECT id_A AS id_prov ,a.val FROM tableA a, tableC c 
WHERE    a.id_A=c.id_A ) a
SET b.val=a.val WHERE id_B=id_prov
于 2013-08-09T14:51:27.863 に答える
1

これにより、table_a.col1 からの関連付けられた値で table_b.col2 が更新されます。

UPDATE table_b b
  JOIN table_c c
    ON c.id_B = b.id_B
  JOIN table_a a
    ON a.id_A = c.id_A
   SET b.col2 = a.col1
 WHERE b.id_B = 4

SQL Fiddle デモはこちら: http://sqlfiddle.com/#!2/6203f/1

ノート:

サンプル データは、更新された唯一の table_b 行が であることを示していますid_B = 4。table_a に関連付けられた行がありますが、行(5,'val3')と行は変更されません。(6,null)

上記のクエリの WHERE 句の目的は、行以外id_B = 4が更新されないようにすることです。

テーブルと列のやや奇妙な命名と、紛らわしいほど類似した値により、この例は解読が困難になっています。

ファローアップ

Q: 私が持っている列が複数ある場合は? どうすれば設定できますか?

A:同じステートメントで追加の列を更新するには、その列への式の割り当てを SET 句に含めます。詳細については、MySQL ドキュメントの「マルチテーブル構文」を参照してください。

MySQL ドキュメントはこちら: http://dev.mysql.com/doc/refman/5.5/en/update.html

于 2013-08-09T15:02:07.443 に答える