使用 VALUES() 数组更新所有行中的 2 列
UPDATE 2 columns in all rows using VALUES() array
我不太明白执行以下操作的正确方法:
1.) 我有一个全名列
2.) 我需要将该全名列拆分为名字和姓氏块
3.) 我需要将 'split' 数据插入到它们各自的列中(它们目前是空的并且在同一个 table)
我不知道如何在一个查询中完成,所以我将其分解为几个步骤:
1.) 得到了我的拆分数据(first/last 个字符串)
SELECT fullname, SUBSTRING_INDEX(fullname,' ',1) AS fname, SUBSTRING_INDEX(SUBSTRING_INDEX(fullname,'.',2),' ',-1) AS lname FROM tablename;
这给了我的 fname 和 lname 子字符串..
我试错了:
INSERT INTO paypalRegistration (firstname, lastname) VALUES
("xxxx", "xxx"),
("yyy", "yyy"),
("zzz", "zzz"),...etc..
这只是将内容插入新行..(并且没有更新 table 中已经存在的当前行 [带有空白列])
所以我尝试了这个:
UPDATE paypalRegistration SET(firstname, lastname) VALUES ("xxxx", "xxx"),
("yyy", "yyy"), ("zzz", "zzz"),...etc..
但是出错了..
您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 '(firstname, lastname) VALUES ("xxxx", "xxx").....[=14= 附近使用的正确语法]
所以在这一点上,我的问题有两个。
1.) 如何在 1 个查询中执行此操作?
2.) 在我所处的位置,使用我上面的唯一值更新 2+ 列的正确方法是什么?
更新:
这最终对我有用:
UPDATE myTable SET firstname=SUBSTRING_INDEX(fullname,' ',1), lastname=SUBSTRING_INDEX(SUBSTRING_INDEX(fullname,'.',2),' ',-1);
说你的 table 名字是 paypalRegistration
此 table paypalRegistration 有以下列:
- id INT 主键
- 全名 VARCHAR
- 名字 VARCHAR
- 姓氏 VARCHAR
我希望您的 table paypalRegistration 中已有 id 列,如上文所述。
现在,您可以这样做 SQL:
UPDATE paypalRegistration x
INNER JOIN (
SELECT
id,
SUBSTRING_INDEX(fullName,' ',1) AS fname,
SUBSTRING_INDEX(SUBSTRING_INDEX(fullName,'.',2),' ',-1) AS lname
FROM paypalRegistration
) y ON y.id=x.id
SET x.firstName = y.fname, x.lastName = y.lname;
我不太明白执行以下操作的正确方法:
1.) 我有一个全名列 2.) 我需要将该全名列拆分为名字和姓氏块 3.) 我需要将 'split' 数据插入到它们各自的列中(它们目前是空的并且在同一个 table)
我不知道如何在一个查询中完成,所以我将其分解为几个步骤:
1.) 得到了我的拆分数据(first/last 个字符串)
SELECT fullname, SUBSTRING_INDEX(fullname,' ',1) AS fname, SUBSTRING_INDEX(SUBSTRING_INDEX(fullname,'.',2),' ',-1) AS lname FROM tablename;
这给了我的 fname 和 lname 子字符串..
我试错了:
INSERT INTO paypalRegistration (firstname, lastname) VALUES
("xxxx", "xxx"),
("yyy", "yyy"),
("zzz", "zzz"),...etc..
这只是将内容插入新行..(并且没有更新 table 中已经存在的当前行 [带有空白列])
所以我尝试了这个:
UPDATE paypalRegistration SET(firstname, lastname) VALUES ("xxxx", "xxx"),
("yyy", "yyy"), ("zzz", "zzz"),...etc..
但是出错了..
您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 '(firstname, lastname) VALUES ("xxxx", "xxx").....[=14= 附近使用的正确语法]
所以在这一点上,我的问题有两个。
1.) 如何在 1 个查询中执行此操作?
2.) 在我所处的位置,使用我上面的唯一值更新 2+ 列的正确方法是什么?
更新:
这最终对我有用:
UPDATE myTable SET firstname=SUBSTRING_INDEX(fullname,' ',1), lastname=SUBSTRING_INDEX(SUBSTRING_INDEX(fullname,'.',2),' ',-1);
说你的 table 名字是 paypalRegistration 此 table paypalRegistration 有以下列:
- id INT 主键
- 全名 VARCHAR
- 名字 VARCHAR
- 姓氏 VARCHAR
我希望您的 table paypalRegistration 中已有 id 列,如上文所述。 现在,您可以这样做 SQL:
UPDATE paypalRegistration x
INNER JOIN (
SELECT
id,
SUBSTRING_INDEX(fullName,' ',1) AS fname,
SUBSTRING_INDEX(SUBSTRING_INDEX(fullName,'.',2),' ',-1) AS lname
FROM paypalRegistration
) y ON y.id=x.id
SET x.firstName = y.fname, x.lastName = y.lname;