2013-04-03 85 views
1

我有一个包含“名称”字段的大型(100万行+)数据库/表。但是,我需要名字和姓氏字段。MySQL使用同一表中另一个字段的查询结果填充新字段

我能够运行查询来显示拳头和姓氏的方式,我需要他们在新的领域(解析),但我似乎无法得到这些查询结果INSERT到表中。

我能够在表中创建字段,但不能填充它们。

我在phpMyAdmin中工作,并且通过ODBC从Access中导出表。

几个不起作用的代码示例如下。我不得不使用SQL几年,我想也许这种方法的逻辑是错误的。我当然感谢任何帮助。

示例不起作用:

INSERT INTO fed2012_aquabarndesign_com (lastname) 
select left(Name,InStr(Name,',')) AS lastname 
from fed2012_aquabarndesign_com 

INSERT INTO fed2012_aquabarndesign_com (lastname) 
Values (select left(Name,InStr(Name,',')) from fed2012_aquabarndesign_com); 
+0

你们是不是要重新插入这些记录或只是您的全名现场分成姓氏和名称(更新)? – sgeddes 2013-04-03 22:49:06

+0

我试图重新插入记录。这个想法是在其他人生成后删除“名称”字段......但我很乐意提供建议。 – 2013-04-03 22:52:44

回答

2

这里是你如何可以用UPDATE做到这一点 - 不知道要INSERT这些记录回到同一个表:

update fed2012_aquabarndesign_com 
set firstname = trim(left(name, instr(name, ' '))), 
    lastname = trim(right(name, length(name) - instr(name, ' '))) 

SQL Fiddle Demo

这确实假定每个全名在名字和姓氏字段之间都有空格。

如果你真的想重新插入的行,那么这应该工作:

insert into fed2012_aquabarndesign_com (firstname, lastname) 
select trim(left(name, instr(name, ' '))), 
    trim(right(name, length(name) - instr(name, ' '))) 
from fed2012_aquabarndesign_com; 

SQL Fiddle Demo

+1

你是有史以来最伟大的人!这工作完美! – 2013-04-03 22:58:01

+0

@WesCook - 至少np,很高兴我可以帮助! – sgeddes 2013-04-03 22:58:57

相关问题