2013-08-09 3 views
-1

나는 다음과 같은 테이블이 .. 내가 표-B에 테이블-A에서 복사 할입니다 필요mysql 테이블을 한 테이블에서 다른 테이블로 업데이트하는 방법은 무엇입니까?

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 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  
    ... ... 
+0

어떤 상태입니까? 이것이 없으면 'insert into tableA (select * from tableB)'가 될 것입니다 ... – jaczes

+0

테이블 A id_A 1에서 테이블 B로 복사하고 싶습니다. 어떻게하면됩니까? –

+0

테이블 A와 B가 세 번째 테이블 C에 연결되어 있기 때문에 문제가 있습니다 ... –

답변

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 
1

이 table_b.col2 위스콘신 업데이트합니다 사소한 table_a.col1에서 관련된 값 : 제

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 Demo here: http://sqlfiddle.com/#!2/6203f/1

참고

예 데이터를 업데이트 만 table_b 행이 id_B = 4 도시이다. 행 (5,'val3')(6,null)은 table_a에 연관된 행이 있더라도 변경되지 않습니다.

위의 쿼리에서 WHERE 절의 목적은 id_B = 4 이외의 행이 업데이트되지 않도록하기위한 것입니다.

테이블과 열의 이름이 다소 이상하고 혼동을 일으킬 정도로 비슷한 값을 사용하면 예제를 해독하기 어렵습니다.

후속

Q : 내가 가진 열이 하나 이상이 경우? 내가 어떻게 설정할 수 있니?

A : 동일한 명령문에서 추가 열을 업데이트하려면 해당 열에 SET 절에 표현식을 포함하십시오. 자세한 내용은 MySQL 설명서의 "다중 테이블 구문"을 참조하십시오.

MySQL Documentation here: http://dev.mysql.com/doc/refman/5.5/en/update.html

+0

SET b.col2 = a.col1, 가지고있는 열이 둘 이상인 경우? 내가 어떻게 설정할 수 있니? –

관련 문제