MySQL插入或更新(其中2列匹配)

时间:2014-06-22 18:19:33

标签: mysql

我有一个像下面的表结构(如下面的虚拟数据)。

RecordId | UserId | TestId | Score
----------------------------------
   1     |   1    |    4   |  98
   2     |   1    |    5   |  92
   3     |   1    |    6   |  91
   4     |   2    |    4   |  99
   5     |   2    |    5   |  07
   6     |   2    |    6   |  08

我想update上述内容,但我没有RecordId方便。 因此,我要说UserId 2上的TestId 5获得了Score 55

我们目前不知道UserId 2 TestId 5上的记录是否存在,因此如果数据尚未存在,则需要添加数据。如果UserId和TestId已经存在,我需要更新它们。

我不认为'我想使用任何replace查询,因为我已经读过这些查询删除旧记录和创建新记录,这将有一个新的Id。

我认为'它需要update on duplicate update,但我不能让它工作?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

好的,这就是答案。 原来我的查询很好,但我需要创建一个unique key

这是我使用的准备好的SQL语句。

INSERT INTO test (UserId, TestId, Score) VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE UserId=? TestId=? Score=?;

UserId&的独特组合时进行此更新TestId我使用了以下SQL查询。

ALTER TABLE test ADD UNIQUE KEY `UserTests` (`UserId`, `TestId`);

我希望这个&我的解释可以帮助别人。