我有一个计数表,我希望能够在重命名一个复合键字段时对计数求和。这很难解释,所以让我给你看一些 SQL:
示例表:
CREATE TABLE `test` (
`id` int(11) NOT NULL,
`type` int(11) NOT NULL,
`count` int(11) NOT NULL,
PRIMARY KEY (`id`,`type`)
);
插入一些数据:
INSERT INTO test VALUES(1, 10, 1);
INSERT INTO test VALUES(2, 20, 3);
INSERT INTO test VALUES(2, 10, 3);
INSERT INTO test VALUES(2, 30, 3);
查询数据:
mysql> SELECT SUM(count) as count FROM test WHERE id = 2;
+-------+
| count |
+-------+
| 9 |
+-------+
mysql> SELECT SUM(count) as count FROM test WHERE type = 10;
+-------+
| count |
+-------+
| 4 |
+-------+
效果很好,快速灵活。
现在,我想将类型 10重新映射为类型 20
UPDATE test SET type = 20 WHERE type = 10;
Duplicate entry '2-20' for key 'PRIMARY'
在这里使用ON DUPLICATE KEY UPDATE
是无效的。我认为这应该可以通过创意插入来实现,但我不确定。谁能想到一种方法?