我有一个客户信息数据库。帐单地址和送货地址有单独的行,并带有表示它的标志; BA,SA。许多记录都设置为BA,因此每个客户都有重复记录。我需要为SA设置重复记录。 我尝试了这个,但它更新了所有重复的记录。相反,我想只更新其中一个重复记录;
UPDATE customer1 AS C1 JOIN
(
SELECT Ca.user_id, C2.CID, Ca.address_type FROM
customer1 AS Ca JOIN
customer2 AS C2 ON CC.user_id = C2.CID
GROUP BY Ca.user_id
HAVING COUNT(*) > 1
) AS C2a ON
C1.user_id = C2.CID
SET C1.address_type = 'SA'
答案 0 :(得分:2)
...
LIMIT 0,1
请注意,正如其他人所说的那样,您首先不应该在数据库中有重复的行 - 这意味着您的架构是错误的。此外,您将在没有ORDER BY的情况下使用LIMIT获得警告
答案 1 :(得分:0)
就数据库而言,重复记录是不可忽视的。
我认为您最好的选择是为每条记录添加一个自动生成的ID(请参阅auto_increment)。然后,您可以唯一标识要更新的记录。
另一种方法是复制其中一个副本中的数据,删除它们,插入一条记录,然后插入另一条记录并进行所需的更改。
答案 2 :(得分:0)
您应该规范化表模式以避免重复数据。
意思是,我会建议一个包含所有地址的“地址”表 并通过字段BA_address和SA_address扩展“customer”表,指向这些地址。
如果您现在需要将记录从BA复制到SA,您只需将相同的addressID放在SA字段中,就像在BA字段中一样。