我试图将MYSQL中已经存在的表中的特定列拆分为两列,并获取返回的两列并将它们插入到已有的表中。
我几天前才开始学习MYSQL,如果这是个问题,我很抱歉:
以下是我迄今所做的尝试:
MYSQL代码开始:
SELECT substring_index(substring_index(ZIP_code, '-',1), '-', -1) as ZIP,
substring_index(substring_index(ZIP_code, '-',2), '-', -1) as Extended_info,
from Region.AddressMYSQL代码结束:
这确实将我的数据字段分割成两列,一列为ZIP,另一列为附加数据,类似于“12345-990001”。问题是,我不能将此返回添加到我拥有的另一个表中。下面是im现在使用的语法(但它不起作用):
MYSQL代码开始:
INSERT INTO TABLE Location
(SELECT substring_index(substring_index(ZIP_code, '-',1), '-', -1) as ZIP,
substring_index(substring_index(ZIP_code, '-',2), '-', -1) as Extended_info,
from Region.Address) where ZIP is varchar(64), AND Extended_info is varchar(64)MYSQL代码结束:
任何帮助,将是非常感谢的,谢谢您提前!
发布于 2014-03-22 15:34:49
您应该始终在insert中使用列列表。问题是您的查询被解释为:
insert into location(select . . .)select不是有效的列。此外,单词table也是不必要的。所以试试这个:
INSERT INTO Location(zip, extended_info)
SELECT substring_index(substring_index(ZIP_code, '-',1), '-', -1) as ZIP,
substring_index(substring_index(ZIP_code, '-',2), '-', -1) as Extended_info,
from Region.Address;注:我猜列名是什么。
编辑:
您需要在所有没有默认值且不能接受NULL的列中插入一个值。我猜zip_code是您想要填充zip的字段。
INSERT INTO Location(zip_code, extended_info)
SELECT substring_index(substring_index(ZIP_code, '-',1), '-', -1) as ZIP,
substring_index(substring_index(ZIP_code, '-',2), '-', -1) as Extended_info,
from Region.Address;也许你想要这样的东西:
INSERT INTO Location(zip_code, zip, extended_info)
SELECT '' as zip_code,
substring_index(substring_index(ZIP_code, '-',1), '-', -1) as ZIP,
substring_index(substring_index(ZIP_code, '-',2), '-', -1) as Extended_info,
from Region.Address;https://stackoverflow.com/questions/22579630
复制相似问题