2013-04-07 2 views
1

2 개의 동일한 테이블이 있습니다. 'Number'와 'Productcode'필드가 고유 키를 형성합니다. 이 고유 한 키 조합은 두 테이블의 동일합니다.Mysql : 원본 테이블의 레코드를 대상 테이블로 업데이트

테이블 2의 레코드를 테이블 1에 삽입하려고합니다. 레코드 고유 키가 이미 존재할 수 있습니다. 이 경우 모든 필드에 대해 레코드를 업데이트해야합니다.

INSERT INTO Table_dest (Number, Productcode, TransactionDate, 
         TransactionTime, Price) 
SELECT 
    Number, Productcode, TransactionDate, TransactionTime, Price 
FROM 
    Table_source 
WHERE 
    Table_source.TransactionDate >= Table_dest.TransactionDate 
    AND Table_source.TransactionTime > Table_dest.TransactionTime; 

그러나 그것은 나를 제공 :하지만 ... 기록은 전용 테이블이 레코드의 날짜 필드는 다음 테이블에서 날짜 필드가

1. 나는 다음을 시도보다 최근의 경우 업데이트해야 WHERE 절에 오류가 있습니다. 또한 중복에 오류를 제공하지만 주소를 지정하는 방법을 모르겠습니다. 누구든지 제안 사항이 있으십니까? 감사합니다. 두 테이블을 조인하면서

답변

0

이 형식을 따라야합니다 : 그것은 당신을 위해 일하는 경우

INSERT INTO tableA (a1, a2, a3) 

SELECT b1, b2, b3 
FROM tableB b 
JOIN tableA a ON a.a1 = b.b1 
WHERE (CONDITION) 

참조.

+0

선택한 쿼리 만 실행하고 결과를 확인하십시오. 원본 및 대상 테이블의 열 수가 일치해야합니다. – Harpreet

+0

감사! 나는 다음을했다 : INSERT INTO Table_dest (Number, Productcode, TransactionDate, TransactionTime, Price) SELECT 번호, Productcode, TransactionDate, TransactionTime, Price FROM Table_source s LEFT JOIN Table_dest d ON s.Number = d.Number 및 s.Productcode = d .Productcode 어디 s.TransactionDate> = s.TransactionDate 및 s.TransactionTime> d.TransactionTime; 하지만 이제는 나에게 오류 메시지가 나타납니다 : "필드 목록의 열 '숫자'가 모호합니다." –

+0

이 오류는 필드의 이름이 같은 방식으로 지정 되었기 때문에 발생합니다. 두 테이블 모두 같은 이름의 필드가 있습니다. MySQL 엔진은 어떤 테이블을 따라야 할지를 결정할 수 없었다. 다음과 같이 해보십시오 :'SELECT s.Number, s.Productcode' – Harpreet

관련 문제