2016-12-03 70 views
0

我有一个相对简单的问题,我试图解决。我有两张桌子。一个姓名和一个“最后”姓名字段,而第二个姓名字段只有一个“名字”字段,姓名和姓氏在一起。我试图匹配具有相同名称的记录,并从第一个到第二个表中更新名为“代码”的字段。但是,我知道我可以使用concat()函数,但是在比较时我一直收到错误。下面是我得到了什么:MYSQL在WHERE子句中连接和比较?

UPDATE managers 
    SET managers.company_code = (
    SELECT oldManagers.Code 
    FROM oldManagers 
    WHERE oldManagers.name=CONCAT(managers.first, " ", managers.last) 
); 

我得到这个错误:#1242 - 子查询返回比1排

任何想法吗?

感谢

回答

2

您可以使用下面的语法:

UPDATE managers, oldManagers 
SET managers.company_code = oldManagers.Code 
WHERE oldManagers.name = CONCAT(managers.first, " ", managers.last) 

这将更新managers表的字段company_codeoldManagers.Code的基础上,你where子句中的值。

+0

嗯,错误解决,但没有行正在更新 –

+0

你确定有相关的行吗? – Dekel

+0

明白了!原来其中一个表没有被修剪,他们是隐藏的字符。谢谢您的帮助! –