我有一个奇怪的问题。
我有一个包含两个表的相当大的数据库。我需要将列的内容从名称更改为另一个表中已存在的ID。
示例:
我有一个包含列"名称"
的表格名称列中包含人员"姓氏,名字和#34;如图所示
Name | othercolumn
Smith, John |
我想将name列的内容更改为与人名相关联的staffID。
员工表是
staffID | firstName | lastName
1 john smith
我的最终结果应该是
Name | othercolumn
1 |
我已经尝试了各种各样的连接和连接,但似乎无法用我有限的mysql知识来解决这个问题。有没有办法在不必手动完成的情况下执行此操作?逗号似乎给了我很多悲伤。谢谢!
答案 0 :(得分:3)
你需要非常小心。首先,我假设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
的{{1}}值:
NULL
这些是不在select t.*
from t
where t.StaffId is null;
表中的名称。他们需要更多的工作。完成后,您可以删除staff
列。