有一个名为 school_teachers 它们有一个 full_name 列和另一个名为 teachers 有哪些 name 以及 last_name 柱。我正在插入 school_teachers 数据输入到 teachers 表,那么,我应该如何在“姓名”和“姓氏”列中插入“全名”列呢?
school_teachers
full_name
teachers
name
last_name
bq3bfh9z1#
请使用以下查询。
INSERT INTO teachers (`name`, `last_name`) SELECT SUBSTRING_INDEX( SUBSTRING_INDEX(full_name, ' ', 1), ' ', - 1 ) AS `name`, IF( SUBSTRING_INDEX(full_name, ' ', 1) = full_name, "", SUBSTRING_INDEX( SUBSTRING_INDEX(full_name, ' ', 2), ' ', - 1 ) ) AS last_name FROM `school_teachers` ;
7ajki6be2#
你可以连接它们。我建议使用 concat_ws() 因为它能处理 NULL 价值观要比 concat() . 所以:
concat_ws()
NULL
concat()
insert into school_teachers ( . . ., full_name) select . . ., concat_ws(name, last_name) from teachers t;
也就是说,您应该只将id放入一个基本上有两列的表中 school_id 以及 teacher_id . 不需要复制所有其他列。这是对数据库的错误使用--您可以使用 JOIN 在你需要的时候得到一个老师的名字。
school_id
teacher_id
JOIN
2条答案
按热度按时间bq3bfh9z1#
请使用以下查询。
7ajki6be2#
你可以连接它们。我建议使用
concat_ws()
因为它能处理NULL
价值观要比concat()
. 所以:也就是说,您应该只将id放入一个基本上有两列的表中
school_id
以及teacher_id
. 不需要复制所有其他列。这是对数据库的错误使用--您可以使用JOIN
在你需要的时候得到一个老师的名字。