插入如果在 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 |
这里的 id
是 primary 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);
如果 roll
和 sub
的组合应该是唯一的,您应该在 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)
我想在插入值时忽略或更新重复项。我知道 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 |
这里的 id
是 primary key
但我想插入以检查 roll & sub
是否已经存在然后更新否则插入新行。我尝试使用以下代码,但那是插入重复行,但它应该更新 table.
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);
如果 roll
和 sub
的组合应该是唯一的,您应该在 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)