カウントテーブルがあり、複合キーフィールドの1つを名前変更するときにカウントを合計できるようにしたいと思います。これを説明するのは難しいので、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
は無効です。クリエイティブなインサートで可能になると思いますが、よくわかりません。誰もがアプローチを考えることができますか?