2010-12-13 1 views
3

mysql에서 중복 키 업데이트 삽입시 증분 업데이트를 수행 할 수있는 방법이 있습니까?삽입 키의 증분 업데이트 ... 중복 키

예/오류 w :

insert into blah (user_id, prefix, email_id, field, source) 
select user_id, substring(name, 1, 3), contact_email_id, 2, source from address_book 
on duplicate key update source = source + values(source); 

ERROR 1052 (23000): Column 'source' in field list is ambiguous 

답변

1

NO, 당신은 해결되지 않습니다 별칭을 사용, source = source + values(source);
를 지정할 수 없습니다.

해결 방법은 left join

insert into blah (user_id, prefix, email_id, field, source) 
select 
    ab1.user_id, substring(ab1.name, 1, 3), ab1.contact_email_id, 2, 
    if(ab2.source, ab1.source+ab2.source, ab1.source) 
from 
    address_book ab1 
left join 
    blah1 as ab2 
on 
    ab1.user_id=ab2.user_id 
on duplicate key 
update source = values(source); 
/* values(source) = ab1.source+ab2.source if duplicate found */ 

1:N 관계에주의 사용하는 것입니다

+0

당신은 내가보다 OP를 읽고 더 잘 수행해야합니다; 요점을 알았어 – zanlok

1

당신은 무엇을 열 이름, 즉 blah.source, address_book.source에 테이블을 앞에 있다면? 소스 테이블 blahselect에 포함되어 있지 않기 때문에