我有一个像下面的表结构(如下面的虚拟数据)。
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
,但我不能让它工作?
非常感谢任何帮助。
答案 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`);
我希望这个&我的解释可以帮助别人。