2016-12-03 3 views
0

У меня есть относительно простая проблема, которую я пытаюсь решить. У меня две таблицы. У одного есть «первое» имя и «последнее» поле имени, а во втором - поле «имя», в котором первое и последнее имя вместе. Я пытаюсь сопоставить записи с тем же именем и обновлять поле под названием «код» от 1-й до 2-й таблицы. Тем не менее, я знаю, что могу использовать функцию 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) 

Это обновит поле company_code из managers таблицы к значению oldManagers.Code основанного на вас where положения.

+0

Хм, ошибка решена, но ни одна из строк не обновляется. –

+0

уверены, что есть соответствующие строки? – Dekel

+0

Получил! Оказывается, одна из таблиц не была обрезана, их были скрытые персонажи. Спасибо за помощь! –

Смежные вопросы