日期:2014-05-16  浏览次数:20969 次

求一个sql语句,关于导入数据的
CREATE TABLE `szs_quata_std` (
  `id` int(8) unsigned zerofill NOT NULL auto_increment COMMENT '自动编号',
  `szs_type` set('1','2') NOT NULL,
  `szs_gg` varchar(100) NOT NULL ,
  `szs_gid` varchar(10) NOT NULL ,
  `szs_price` decimal(8,4) NOT NULL,
  `szs_date` date NOT NULL COMMENT,
  `szs_person` varchar(10) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `NewIndex1` (`szs_type`,`szs_gg`,`szs_gid`),
  KEY `tgg` (`szs_type`,`szs_gg`),
  KEY `gid` (`szs_gid`)
 ) ENGINE=MyISAM AUTO_INCREMENT=476294 DEFAULT CHARSET=utf8

现在要导入大批数据,如果表中有数据,则更新。replace是一个很好的选择,但是我关键字设置了id自动编号,那么replace就不起作用了吧?实际上关键字组合是szs_type,szs_gg,szs_gid,如果表中有这记录,则更新,否则插入,有无好的sql语句?

------解决方案--------------------
在szs_type,szs_gg,szs_gid上创建UNIQUE索引即可使用REPLACE了。

create unique index xxx on `szs_quata_std` (szs_type,szs_gg,szs_gid);