更新表中的重复值

时间:2014-01-22 09:21:29

标签: mysql sql sql-update subquery

我有一张表在某些列中有一些重复的日期。

对于Eg:我有一个包含姓名,电子邮件和更多列的表,其中一些行存在具有相同名称和电子邮件值的行。我不想删除这些重复项,因为我有每行所需的其他信息。但是还有第三列“手机”需要根据名称和电子邮件值进行更新。所以基本上重复的行应该有相同的电话号码。

标准更新查询:

update table a set a.phone = (select b.phone from table b where b.name = a.name and b.email = a.email);

返回'Subquery返回多行错误'。

有没有办法让我更新所有行的电话栏(包括重复项)?

3 个答案:

答案 0 :(得分:0)

我不确定此查询是否可以解决您的问题。但是您的子查询返回了多行,因此您可以选择子查询的前1条记录。

update table a set a.phone = (select top 1 b.phone from table b where b.name = a.name and b.email = a.email)

答案 1 :(得分:0)

尝试这个,但它是t-sql。确保TABLE A具有别名

update a set 
a.phone = B.phone
FROM A as a
INNER JOIN
B
ON a.name=B.name AND a.email=B.email

答案 2 :(得分:0)

UPDATE a
INNER JOIN 
(SELECT MIN(phone) AS phone, `name`, email FROM b GROUP BY NAME, email) AS t
ON a.name = t.name AND a.email = t.email
SET a.phone = t.phone