这个表的name和type字段是联合唯一索引,我想实现把type=1
的数据重新insert到这个表变为type=0
,当冲突时更新aa = CONCAT(aa,VALUES(aa)),但是报错Column 'aa' in field list is ambiguous
,我加了b.aa也还是这样,求大佬指点, 谢谢。
sql:
INSERT INTO b(`name`,`aa`,`type`)
SELECT `name`, aa, 0
FROM b
WHERE `type`=1
ON DUPLICATE KEY UPDATE `aa` = CONCAT(`aa`,VALUES(`aa`))
// 表结构和数据如下
CREATE TABLE `b` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(66) COLLATE utf8_general_mysql500_ci NOT NULL DEFAULT '' COMMENT 'english remark',
`aa` varchar(33) COLLATE utf8_general_mysql500_ci NOT NULL,
`type` tinyint(1) unsigned NOT NULL DEFAULT '1',
PRIMARY KEY (`id`),
UNIQUE KEY `NewIndex1` (`name`,`type`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COLLATE=utf8_general_mysql500_ci CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;
insert into `b`(`id`,`name`,`aa`,`type`) values (4,'a','{2017,01,01}',0),(5,'a','{2017,02,01}',1),(7,'b','{2017,01,11}',0),(8,'b','{2017,01,01}',1),(16,'c','{2017,01,01}3',1);
这个意思?