加入MYSQL UPDATE没有正确加入

时间:2014-12-24 15:39:51

标签: mysql sql join

我正在尝试更新另一个中定义的表中的列。基本上我正在加入两个表并通过将其设置为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 *语句中看到它们)。这些名称是在联接中未被识别的名称。任何人都可以对此有所了解吗?

1 个答案:

答案 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,你想使用它。除非您的公司名称已经过验证和标准化,否则您可能需要进行大量调查。