문제점 : 왼쪽 조인 (또는 다른 빠른 솔루션)과 일치하지 않는 행을 업데이트하고 싶습니다. 초기 목표 : state = 0이고 mytable2와 일치하는 (XOR!) 열 "a"또는 mytable2와 일치하는 열 "b"("a"와 "b"는 일치하지 않아야 함)가있는 mytable1의 레코드를 업데이트하십시오. . 두 테이블의 레코드를 state = 5로 설정하십시오.일치하지 않는 왼쪽 조인 행을 업데이트하십시오.
나는 시도 (실패) :
update mytable1 as t1
left join mytable2 as t2 on (t1.a=t2.a and t1.b=t2.b)
set t1.state=5,t2.state=5
where t1.state=0 and t2.state=0 and t2.a is null;
당신이 볼 수 있듯이 나는이 일치하지 않는 레코드를 업데이트 할 수 있도록 나 또한 행을 갱신, 두 값과 일치하는 모든 레코드를 결합하려고하는 mytable2에서 일치하지 않았습니다. mytable1의 행은 업데이트되지만 table2의 행은 업데이트되지 않습니다. 왼쪽 조인과 일치하는 행을 업데이트 할 수는 있지만 성능상의 히트가 될 행의 99 %입니다 (필자는이 질문을하지 않았으므로 결코 비교할 수 없습니다).
감사합니다. 이 같은
일치하는 t2 행이 없으면 어떻게 t2.state를 업데이트 하시겠습니까? – Benoit
예 왼쪽 조인과 일치하지 않지만 상태 = 0 (두 테이블 모두!) 인 모든 행은 업데이트해야합니다. state! = 0 인 행은 두 테이블 중 어느 것도 업데이트하지 않아야합니다. 도와 줘서 고마워, Benoit. – AndrewBourgeois