MySQL使用同一个表中另一个字段的查询结果填充一个新字段

时间:2013-04-03 22:47:02

标签: mysql sql bigdata sql-insert

我有一个包含“名称”字段的大型(100万+行)数据库/表。但是,我需要一个名字和姓氏字段。

我可以运行查询以在新字段(解析)中按照我需要的方式显示名字和姓氏,但我似乎无法将这些查询结果插入到表中。

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

我在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);

1 个答案:

答案 0 :(得分: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