我想以这种方式对表格进行排序。 这是我桌子的当前状态:
这就是结果:
所以基本上在伪代码中它是:
IF SAME STRING IN "tag" COLUMN THEN add both "power"
任何人都可以建议一种有效的方法来实现这个目标吗?
答案 0 :(得分:7)
select id, sum(power), tag from YourTabeName group by tag
如果你需要从中查询,我会把它作为一个视图。
答案 1 :(得分:3)
创建一个名为t1_temp
的新表,其结构与原始表t1
完全相同。以下内容应该完成工作:
TRUNCATE t1_temp; INSERT INTO t1_temp (id, power, tag) VALUES (SELECT id, SUM(power), tag FROM t1 GROUP BY tag); RENAME TABLE t1 TO t1_temp2, t1_temp TO t1, t1_temp2 TO t1_temp
但是,我建议您尝试修改insert语句。在tag
上创建一个唯一索引,然后使用类似下面的内容(假设id
是自动递增的)
INSERT INTO t1 (power, tag) VALUES (3, 'option1') ON DUPLICATE KEY UPDATE power = power + 3
答案 2 :(得分:0)
即使你已经解决了这是另一种方法
update your_table as t1
inner join
(select tag,sum(power) as power from your_table group by tag) as t2
set t1.power = t2.power
where t1.tag = t2.tag
alter ignore table your_table add unique index i (tag);