2012-08-15 2 views
0

내부 조인이있는 테이블을 업데이트하는 방법에 대해 궁금합니다.mysql에서 내부 조인 구문을 사용하여 테이블을 업데이트하십시오.

update tbl1 a 
inner join tbl2 b using (id) 
set a.val = b.val; 

tbl1의 레코드에 무슨 일 tbl2에 일치하지 않습니다 난 다음 문을 실행하면? tbl1에 그대로 업데이트되고 남아 있지 않습니까? 삭제 될 것인가?

나는 이것을 실행할 수 있고 대답을 얻는다는 것을 알고 있지만, 나는 또한이 배경에서 어떻게 작동하는지에 대한 메커니즘에 관심이 있으며, 누군가 나를 위해 이것을 설명 할 수 있기를 바랬다.

답변

1

업데이트 문이 tbl1에서 작동합니다.

조인은 tbl1에서 업데이트 할 행을 지정하는 필터를 제공합니다.

추가 보너스로 조인은 열 값을 제공합니다.

update 문은 테이블에서 행을 삭제하지 않으며 삭제할 수 없습니다.

+0

나는 백그라운드에서 무슨 일이 일어나고 있는지 이해하려고 노력 중이다. 예를 들어 왼쪽 또는 오른쪽으로 가입했다면 어떨까요? mysql은 일치하지 않는 행에 대해 값을 어떻게 설정합니까? 나는 배경에서 무슨 일이 일어나고 있는지에 대해 이해하려고 노력하고있다. 예를 들어'tbl2'에 일치하는 행이없는 왼쪽 조인 시나리오에서 null이 될까요? – Alex

+0

tbl2에 일치하는 행이 없으면 a.val이 NULL로 설정됩니다. –

+0

그러면 내부 조인과 왼쪽 조인의 업데이트가 어떻게 다릅니 까? 그것은 그들이 여기 같은 물건 인 것 같습니다. – Alex

1

Q :tbl1의 레코드에 어떻게됩니까 tbl2에 일치하지 않습니다?

A : 그들은 tbl2에서 일치가 없기 때문에 그들은 업데이트되지 않습니다. 정의에서 INNER JOIN 키워드는 두 테이블에 적어도 하나의 일치가있을 때 행을 반환합니다. 귀하의 테이블에서 레코드를 삭제할 수있는 유일한 키워드는 DELETE DML입니다.

관련 문제