如何将全名列插入姓名和姓氏列 MYSQL

how to insert a fullname column into name and last name columns MYSQL

有一个名为 school_teachers 的 table,其中有一个 full_name 列, 还有一个名为 teachers 的 table,它有 namelast_name 列。

我正在将 school_teachers 数据插入 teachers table,

那么我应该如何将全名列插入姓名和姓氏列?

您可以将它们连接起来。我建议使用 concat_ws(),因为它比 concat() 更优雅地处理 NULL 值。所以:

insert into school_teachers ( . . ., full_name)
     select . . ., concat_ws(name, last_name)
     from teachers t;

就是说,您应该只将 id 放入一个 table 中,它基本上有两列,即 school_idteacher_id。无需复制所有其他列。这是对数据库的错误使用——您可以在需要时使用 JOIN 来获取教师的姓名。

请使用以下查询。

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