我有一個計數表,我希望能夠在重命名其中一個複合鍵字段時計算總計。這是很難解釋,所以讓我告訴你一些SQL:當在MySQL中執行UPDATE時,重複鍵上的`counts`列
示例表:
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
這裏是無效的。 我認爲它應該有可能與創意插入,但我不知道。任何人都可以想到一種方法嗎?
這正是我正在尋找的東西,我有一種感覺,它可以用純SQL。不幸的是,後來我意識到整個方法都行不通,因爲我們將'未映射'的計數存儲爲'0'類型,並且無法知道它們屬於哪個'id'。儘管如此,這個答案完全正確,+1 – 2012-08-10 13:39:33