2017-03-08 2 views
0

특정 고객을 위해 실수로 테이블의 특정 필드를 덮어 쓰는 문제가 발생하여 별도의 데이터베이스에 백업을 복원했습니다.두 테이블을 하나로 병합

백업 버전에서 한 필드를 가져와 라이브 버전을 덮어 쓰는 쿼리를 작성하려고합니다.

나는 생각 해요 :

UPDATE live.orders 
SET live.orders.price = backup.orders.price 
WHERE live.orders.id = backup.orders.id 
AND live.orders.date > '2017-01-01 00:00:00' 

이 올해 모든 주문 장소에 대한 백업에서 복원 있었는지와 라이브 데이터베이스의 가격 필드를 대체 원하는 효과를 가질까요?

또한 실제로 테이블을 변경하기 전에 테스트하여 출력 결과를 볼 수 있습니까?

감사

+0

물론, 로컬 복사본을 만들거나 서버에 새 데이터베이스로 복사하고, 쿼리를 시도 가입을 기반으로 업데이트 할 필요가 보인다. 그런 다음 트랜잭션 내에서 실행하여 롤백 할 수 있습니다. – ceejayoz

답변

1

UPDATE live.orders 
    JOIN backup.orders ON live.orders.id = backup.orders.id 
    SET live.orders.price = backup.orders.price 
    WHERE live.orders.date > '2017-01-01 00:00:00' 
+0

감사합니다. 나는 'AND'를 'WHERE'로 바꿀 필요가 있다고 생각하니? – Richard

+1

@ 리차드 예 ... 대답 업데이트 ... 어디입니까 – scaisEdge