INSERT ... ON DUPLICATE KEY UPDATE
這個文法常常使用在 表裡面有唯一限制的鍵,或者主鍵的表裡面。
比如 tb(a,b,c) 其中 a是有唯一鍵限制的。
insert into tb (a,b,c) values (1,2,3) on duplicate key update b=b+1,c=c+1;
上面這個語句有2層意思:
1.當表tb裡面 a 含有1 的時候,相當于
update tb set b=b+1,c=c+1 where a =1;
2.當表tb裡面a不含有1的時候
insert into tb (a,b,c) values (1,2,3);
要是a和b都有唯一限制:
那當 a 含有1 或者 b含有2 都相當于 (隻要有一個鍵違反了唯一限制,整個語句都變成update)
update tb set b=b+1,c=c+1 where a =1 or b =2;
其餘情況就直接insert