2010-12-13 159 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);
因爲源表blah沒有在select包括,使用別名不會解決。

一種解決方法將使用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 2010-12-13 21:16:10

1

如果你前綴表中列名,即blah.source,address_book.source?