0

在一个用户的 MySQL 数据库中,有 3 个字段分配给他:

user_id 元键元值

user_id = '297' 
meta_key = 'qty' 
meta_value = '1'

问题是当这个用户,比如说购买另一个产品时,它错误地添加了另外3 个字段:

user_id = '297'  
meta_key = 'qty'  
meta_value = '1'

而不是仅仅将 'qty' 的增量值更新为 '2'。因此,我的数据库中填充了 3 或 4 个重复条目,每个条目的 qty 值为 1,而不是一个字段,其中包含所有 qty 的总和。

我已经修复了导致此问题的错误,但我现在还需要修复数据库。

结构图:http: //i.imgur.com/41Qk07f.png

我想知道是否有一个查询将所有重复的“数量”值求和为一个。

4

2 回答 2

0

这将做到:

UPDATE theTable t
JOIN (SELECT user_id, meta_key, SUM(meta_value) meta_value_sum
      FROM theTable
      GROUP BY user_id, meta_key) t1
ON t.user_id = t1.user_id AND t.meta_key = t1.meta_key
SET t1.meta_value = meta_value_sum

然后删除所有重复的记录:

ALTER TABLE IGNORE theTable ADD UNIQUE INDEX (user_id, meta_key)
于 2013-10-15T18:59:12.947 回答
0

meta_value选择总和

SELECT SUM(meta_value) FROM t1 WHERE meta_key = 'qty'
GROUP BY user_id

然后,您可以删除所有qty行并使用正确的总和值再次插入这些行。

插入查询

使user_idmeta_key一个UNIQUE KEY。然后您可以使用此查询来更新总和:

INSERT INTO t1 VALUES (297, 'qty', 1)
ON DUPLICATE KEY UPDATE meta_value = meta_value + 1
于 2013-10-15T18:59:33.350 回答