根据两列

时间:2017-08-08 22:58:35

标签: php mysql sql database

我有一个奇怪的问题。

我有一个包含两个表的相当大的数据库。我需要将列的内容从名称更改为另一个表中已存在的ID。

示例:

我有一个包含列"名称"

的表格

名称列中包含人员"姓氏,名字和#34;如图所示

     Name   | othercolumn
Smith, John |

我想将name列的内容更改为与人名相关联的staffID。

员工表是

staffID | firstName | lastName
  1          john        smith

我的最终结果应该是

Name | othercolumn
1    |   

我已经尝试了各种各样的连接和连接,但似乎无法用我有限的mysql知识来解决这个问题。有没有办法在不必手动完成的情况下执行此操作?逗号似乎给了我很多悲伤。谢谢!

1 个答案:

答案 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列。