插入如果在 table 中找不到重复项,否则更新

Insert If duplicate not found in table else update

我想在插入值时忽略或更新重复项。我知道 on duplicate key 但我无法找到解决方案。这是示例 table 示例。

| ID   | roll     | sub   | mark |
| ---- |----------| ------|------|
|   1  | 100      | 11    |  15  |
|   2  | 101      | 11    |  16  |
|   3  | 102      | 11    |  17  |
|   4  | 100      | 12    |  10  |
|   5  | 101      | 12    |  11  |
|   6  | 102      | 12    |  12  |

这里的 idprimary key 但我想插入以检查 roll & sub 是否已经存在然后更新否则插入新行。我尝试使用以下代码,但那是插入重复行,但它应该更新 table.

之后的第 6 行
CREATE INDEX mycompo_index on student(roll,sub);

insert into student(roll, mark, sub)
            values (102, 22, 12)
on duplicate key update mark = values(mark);

如果 rollsub 的组合应该是唯一的,您应该在 table:

中定义这样一个键
ALTER TABLE student ADD CONSTRAINT student_uq UNIQUE(roll, sub)

请注意,如果执行此操作,则不必显式创建正在创建的索引,约束将为您创建。有了这个位置后,您可以使用您尝试使用的 on duplicate key 语法:

INSERT INTO student(roll, mark, sub)
VALUES (102, 22, 12)
ON DUPLICATE KEY UPDATE mark = VALUES(mark)