我有一张表在某些列中有一些重复的日期。
对于Eg:我有一个包含姓名,电子邮件和更多列的表,其中一些行存在具有相同名称和电子邮件值的行。我不想删除这些重复项,因为我有每行所需的其他信息。但是还有第三列“手机”需要根据名称和电子邮件值进行更新。所以基本上重复的行应该有相同的电话号码。
标准更新查询:
update table a set a.phone = (select b.phone from table b where b.name = a.name and b.email = a.email);
返回'Subquery返回多行错误'。
有没有办法让我更新所有行的电话栏(包括重复项)?
答案 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