这对我的SQL-foo来说有点太棘手。如果一行已经存在相同的值,则增加一列
我需要做的是插入一个新行(其中包含3列),除非行已经存在,其中两个值是相同的,如果它确实存在,我需要增加第三个值在那一行上。假设两个值是关系(a,b),第三个值是关系的强度(随着关系的每次发生都会增加)。
在此先感谢!
这对我的SQL-foo来说有点太棘手。如果一行已经存在相同的值,则增加一列
我需要做的是插入一个新行(其中包含3列),除非行已经存在,其中两个值是相同的,如果它确实存在,我需要增加第三个值在那一行上。假设两个值是关系(a,b),第三个值是关系的强度(随着关系的每次发生都会增加)。
在此先感谢!
INSERT
INTO a_b (a, b, strength)
VALUES ($a, $b, 1)
ON DUPLICATE KEY
UPDATE strength = strength + 1
请确保您有一个UNIQUE (a, b)
或PRIMARY KEY (a, b)
约束在桌子上
我们可以假设(A,B)是唯一的这个表?特别是,我们可以在其上添加一个独特的索引吗? – tloach 2011-03-28 15:21:36
@tloach是的,(a,b)对于这个表总是唯一的,值B是唯一的(关系的第二个成员),值A可以出现多次。 – Filipe 2011-03-28 15:27:40