ID
仅当 3 个现有列 ( , Type
, Year
) 的组合不唯一时,我才想在 MySQL 表中插入新行。如果这 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, ....
这就是我创建复合索引并使用 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
这是我的复合索引: ALTER TABLE Abs
ADD PRIMARY KEY(
ID
,
Type
,
Year
);
在这种情况下,最好的方法是什么。我认为这在 RDB 世界中很常见,但找不到简单的解决方案。