Mysql 组合插入和选择变量

Mysql 组合插入和选择变量,mysql,variables,select,insert,Mysql,Variables,Select,Insert,我有两个表users\u new和users\u old,其中包含一些行数。 我想使用insert select将数据从users\u old插入到users\u new 表users\u old有一个字段name,其中包含名字和姓氏。 表users\u new必须有两个字段,名字(name)和姓氏(姓氏) 我不知道如何把它们结合起来。有什么建议吗 SET @str=""; SET @firstName=""; SET @lastName=""; INSERT INTO users_new

我有两个表
users\u new
users\u old
,其中包含一些行数。 我想使用
insert select
将数据从
users\u old
插入到
users\u new

users\u old
有一个字段
name
,其中包含名字和姓氏。
users\u new
必须有两个字段,名字(
name
)和姓氏(
姓氏

我不知道如何把它们结合起来。有什么建议吗

SET @str="";
SET @firstName="";
SET @lastName="";

INSERT INTO users_new  (name, surname)
VALUES(
    SELECT @firstName,@lastName;
    @str=select name
        FROM  users_old  
SET @firstName = SUBSTRING_INDEX(@str, ' ', 1);
SET @lastName=LTRIM(REPLACE(@str, @firstName, ''))
);

如果拆分标准是空格,正如发布的sql代码所暗示的,那么您可以使用一个简单的
INSERT-INTO-SELECT
语句:

INSERT INTO users_new (name, surname)
SELECT SUBSTRING_INDEX(name, ' ', 1), SUBSTRING_INDEX(name, ' ', -1)
FROM users_old

姓氏是通过第二次调用选择的:由于
-1
参数,此函数将获取
名称
字段的第二部分。

如果所有名称都由姓氏和名组成,则此函数只起作用。如果一个名字只有一个单词,那么它将在两个col中重复,如果在混合中有一个中间名,那么姓氏将丢失。