mysql中有效的截断方法?

时间:2011-03-22 13:54:26

标签: php mysql

我想以这种方式对表格进行排序。 这是我桌子的当前状态:

enter image description here

这就是结果:

enter image description here

所以基本上在伪代码中它是:

IF SAME STRING IN "tag" COLUMN THEN add both "power" 

任何人都可以建议一种有效的方法来实现这个目标吗?

3 个答案:

答案 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);