首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL auto_increment

MySQL auto_increment
EN

Stack Overflow用户
提问于 2010-08-02 13:10:57
回答 4查看 1.2K关注 0票数 0

我有一张桌子

代码语言:javascript
复制
CREATE TABLE `zipcodes2` (
  `ID` int(11) NOT NULL auto_increment,
  `zipcode` int(6) NOT NULL default '0',
  `State` char(3) NOT NULL default '',
  `zip_name` varchar(255) NOT NULL default '',
  `CityAliasName` varchar(255) NOT NULL default '',
  `latitude` float(26,7) NOT NULL default '0.0000000',
  `longitude` float(36,7) NOT NULL default '0.0000000',
  `AreaCode` smallint(3) NOT NULL default '0',
  `County` varchar(255) NOT NULL default '',
  `TimeZone` smallint(3) NOT NULL default '0',
  `DayLightSavings` char(2) NOT NULL default '',
  PRIMARY KEY  (`zipcode`,`CityAliasName`,`ID`),
  KEY `CityAliasName` (`CityAliasName`),
  KEY `State` (`State`),
  KEY `index_by_zipcode` (`zipcode`),
  KEY `index_by_state` (`State`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

我正在尝试从另一个表插入到这个表中。问题是auto_increment字段没有递增。我做错了什么?

代码语言:javascript
复制
insert into zipcodes2 (ID,zipcode,state,zip_name,CityAliasName,latitude,longitude, AreaCode, County, TimeZone, DayLightSavings)
select distinct null,ZipCode as zipcode,State as state,City as zip_name, CityAliasName, Latitude as latitude, Longitude as longitude, AreaCode
, County, TimeZone, DayLightSavings
from zip_codes_all  
where state NOT in ('PR', 'AE', 'PW', 'MP', 'GU', 'FM', 'AS','AP', 'AA','FM','GA','GU','FM')
limit 0,10;
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-02 13:30:49

问题是,

主键(zipcodeCityAliasNameID)

应该是这样的,

主键(ID)

一旦我改变了这一点,并从插入中删除了ID字段,我就得到了我所期望的结果。

票数 0
EN

Stack Overflow用户

发布于 2010-08-02 13:15:43

请尝试从查询中删除“ID”:

代码语言:javascript
复制
insert into zipcodes2 (zipcode,state,zip_name,CityAliasName,latitude,longitude, AreaCode, County, TimeZone, DayLightSavings)
select distinct ZipCode as zipcode,State as state,City as zip_name, CityAliasName, Latitude as latitude, Longitude as longitude, AreaCode, County, TimeZone, DayLightSavings
from zip_codes_all  
where state NOT in ('PR', 'AE', 'PW', 'MP', 'GU', 'FM', 'AS','AP', 'AA','FM','GA','GU','FM')
limit 0,10;
票数 0
EN

Stack Overflow用户

发布于 2010-08-02 13:49:24

是的,主键定义是一个键。正如mysql文档所说:

对于MyISAM和BDB表,您可以在多列索引中的辅助列上指定AUTO_INCREMENT。在本例中,为前缀列生成的值的计算公式为MAX(auto_increment_column) +1,其中AUTO_INCREMENT =给定前缀。当您想要将数据放入有序组中时,这很有用。

可能在修复主键之前,你的id得到了不唯一的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3385160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档