从mysql中的另一个表创建用户名
我试图从一个表中创建一个用户名,并将其插入到一个新表中,我有一个名为person的表,它有列: 名、姓、地址、电话、电子邮件、可用性id、技能、通信、志愿者id、用户名 基本上,我希望将名字和姓氏合并到用户名中,并将该用户名插入到新表中 我创建了如下表:从mysql中的另一个表创建用户名,mysql,Mysql,我试图从一个表中创建一个用户名,并将其插入到一个新表中,我有一个名为person的表,它有列: 名、姓、地址、电话、电子邮件、可用性id、技能、通信、志愿者id、用户名 基本上,我希望将名字和姓氏合并到用户名中,并将该用户名插入到新表中 我创建了如下表: CREATE TABLE user4 AS SELECT * FROM person; ALTER TABLE user4 ADD username VARCHAR (30) NOT NULL; 所有这些都起作用了,然后我尝试使用以下内容创建
CREATE TABLE user4 AS
SELECT * FROM person;
ALTER TABLE user4 ADD username VARCHAR (30) NOT NULL;
所有这些都起作用了,然后我尝试使用以下内容创建用户名:
INSERT INTO user4(username) SELECT SUBSTRING(name, 1, 4)FROM person;
我想不出我遗漏了什么,有什么帮助吗?您似乎想要的是更新查询,而不是插入:
update user4 set username = concat(first_name, ' ', last_name);
或者,您也可以在创建新表时动态计算新列:
create table user4 AS Select p.*, concat(first_name, ' ', last_name) username from person p
您应该在最后一条语句中使用UPDATE not SELECT。请尝试使用
VARCHAR(255)
作为默认值,并且仅当您有非常令人信服的理由时才限制它。对于许多事情,如姓名和电子邮件地址,较短的字段可能会给您的用户带来巨大的麻烦。我知道,但我被要求使用insert-into来实现这一点您的解决方案是可行的,但我被要求使用insert-into