我正在尝试更新另一个中定义的表中的列。基本上我正在加入两个表并通过将其设置为tbl2来更新tb1中的列中的数据。
UPDATE phone
JOIN companyInfo
ON companyInfo.companyName = phone.companyName
SET phone.companyID = companyInfo.companyID
出于某种原因,电话中的companyID仅针对某些行进行更新。我在手机tbl中有大约58mil的行,每个行都有一个与companyInfo中的companyName匹配的正确companyName。我不知道为什么只有34mil的行受到更新的影响。同样的查询对我的其他表格起了很好的作用。电话表的结构是正确的,但是mysql似乎没有识别出电话中的某个companyName,这意味着我无法通过某些公司名称搜索电话,即使这些名字在表中(我可以在SELECT *语句中看到它们)。这些名称是在联接中未被识别的名称。任何人都可以对此有所了解吗?
答案 0 :(得分:2)
这是您的查询:
UPDATE phone JOIN
companyInfo
ON companyInfo.companyName = phone.companyName
SET phone.companyID = companyInfo.companyID;
如果这不是更新某些行,那是因为companyName
不匹配。您可以调查不匹配。这是一种方式:
select p.*
from phone p left join
companyInfo ci
on p.companyName = ci.companyName
where cci.companyName is null;
这很容易。他们为什么不匹配?可能有无数的原因,例如:
Company
)一般来说,公司名称对表格来说是一个非常糟糕的关键。我注意到你似乎有一个更好的ID,你想使用它。除非您的公司名称已经过验证和标准化,否则您可能需要进行大量调查。