gpt4 book ai didi

mysql - 插入如果在表中找不到重复项则更新

转载 作者:行者123 更新时间:2023-11-29 06:25:46 24 4
gpt4 key购买 nike

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

| 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 是否已经存在然后更新,否则插入新行。我尝试使用以下代码,但这是插入重复行,但它应该更新下表中的第 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 的组合应该是唯一的,你应该在你的表中定义这样一个键:

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)

关于mysql - 插入如果在表中找不到重复项则更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31086391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com