我想在插入MySQL表新行仅当现有列3的组合(ID,Type,Year)不是唯一的.如果这3列匹配,我想只更新字段'Val'.
这是表:
CREATE TABLE IF NOT EXISTS `Abs` (
`ID` bigint(10) NOT NULL,
`Type` int(11) NOT NULL,
`Year` int(11) NOT NULL,
`val` decimal(4,1) DEFAULT NULL, ....
Run Code Online (Sandbox Code Playgroud)
这就是我创建复合索引并使用INSERT ON DUPLICATE KEY,尝试保存IF THEN块的原因.
在我的表中没有任何行Type= 0,但以下似乎没有插入任何内容.
INSERT INTO `Abs` (`ID`, `Type`, `Year`, `Val`) VALUES (141, 0, 2013, 5)
ON DUPLICATE KEY UPDATE `Val` = 5
Run Code Online (Sandbox Code Playgroud)
这是我的综合指数:ALTER TABLE Abs
ADD PRIMARY KEY( ,
,
ID );
TypeYear
在这种情况下,最好的方法是什么.我认为这是RDB世界中非常常见的情况,但找不到简单的解决方案.