INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=3;
Run Code Online (Sandbox Code Playgroud)
是否可以设置它,因此它不需要和整个匹配行.例如:如果列'a'是重复的,那么进行更新?
谢谢
ON DUPLICATE KEY就是这样......如果您插入的数据违反了唯一的密钥要求,请将其转换为具有导致违规的密钥组合的行的更新.如果您的主键只是其中一个字段(例如'a'),并且您已经在表中有一行a = 1,那么您将获得更新而原始行将获得其'c'设置到3.
如果它是一个复合键(比如'a,b'),那么如果你有一个a = 1且b = 2的现有记录,那么那些行的C将变为3而不是创建一个新记录.
如果此表上没有唯一/主键,那么您永远不会得到更新,它只是一个额外详细的插入语句.