2016-12-03 37 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

明白了!原來其中一個表沒有被修剪,他們是隱藏的字符。謝謝您的幫助! –