обновить столбец на основе двух столбцов

У меня странная проблема.

У меня довольно большая база данных с двумя таблицами. Мне нужно изменить содержимое столбца с имени на идентификатор, который уже существует в другой таблице.

Пример:

У меня есть таблица, которая содержит столбец «Имя»

столбец name содержит лиц «фамилия, имя», как показано

     Name   | othercolumn
Smith, John |

Я хотел бы изменить содержимое столбца имени на идентификатор персонала, связанный с именем человека.

Штатное расписание

staffID | firstName | lastName
1          john        smith

Мой конечный результат должен быть

Name | othercolumn
1    |

Я перепробовал все виды соединений и конкатов, но, похоже, не могу понять это из-за моего ограниченного знания MySQL. Есть ли способ сделать это без необходимости делать это вручную? Запятая, кажется, дает мне много горя. Спасибо!

-1

Решение

Вы должны быть очень осторожны с этим. Во-первых, я предполагаю, что StaffId это число. Итак, добавьте столбец в таблицу:

alter table t add StaffId int;

Затем обновите этот столбец:

update t join
staff s
on t.name = concat_ws(',', s.lastname, s.firstname)
set t.StaffId = s.StaffId;

Обратите внимание, что после того, как вы это сделали, вы можете StaffId значения, которые NULL:

select t.*
from t
where t.StaffId is null;

Это имена, которых нет в staff Таблица. Они требуют больше работы. Когда вы закончите, вы можете бросить name колонка.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector