我的环境是服务器版本:5.1.72社区MySQL社区服务器(GPL)。
一个例子:
CREATE TABLE `pe` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`person_id` int(11) NOT NULL,
`height` int(3) DEFAULT NULL,
`weight` double(5,1) DEFAULT NULL,
`pe_time` date NOT NULL DEFAULT '0000-00-00',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_id` (`person_id`,`pe_time`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
我在表pe中有一些行,其中一些像:
person_id, height, weight, pe_time
10051, 160, 55, '2017-10-20'
10052, 172, 60, '2018-01-09'
现在,给出一个新的行:
person_id, height, weight, pe_time
10052, 172, 61, '2018-01-10'
因为pe_time的年份是2018年且person_id = 10052,所以我想更新该行,将每个字段设置为新值。
但是,给出了一个新的行:
person_id, height, weight, pe_time
10051, 161, 57, '2018-01-10'
因为没有pe_time的年份是2018年且person_id = 10051的行,所以我想插入新的行。
就这样,我想要
UNIQUE KEY is `uk_id` (`person_id`,**`pe_time's year`**).
如果无法创建那个UNIQUE KEY,如何编写sql
INSERT INTO... ON DUPLICATE KEY UPDATE...
请这样做?