如何在mysql的name和last name列中插入fullname列

busg9geu  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(306)

有一个名为 school_teachers 它们有一个 full_name 列和另一个名为 teachers 有哪些 name 以及 last_name 柱。
我正在插入 school_teachers 数据输入到 teachers 表,
那么,我应该如何在“姓名”和“姓氏”列中插入“全名”列呢?

bq3bfh9z

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` ;
7ajki6be

7ajki6be2#

你可以连接它们。我建议使用 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 在你需要的时候得到一个老师的名字。

相关问题