gpt4 book ai didi

mysql - 如果不存在,则插入新行,具体取决于同一表的其他行中的列值

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

我有一个包含列 (id,col_id,type_id,value) 的表格,如下所示

| id | col_id | type_id | value    |  ------------------------------------| 1  | 152    | 22      | DGL      || 2  | 152    | 27      | AD56JK-5 || 3  | 152    | 30      | 5708     || 4  | 154    | 22      | JVM      || 5  | 154    | 27      | AD29JL-9 || 6  | 154    | 30      | 9584     || 7  | 155    | 22      | MVR      || 8  | 155    | 27      | AD29JM-1 |

我想要做的是为每个不同的 col_id 将 type_id=30 的行的值更改为 type_id=22+col_id 的值的行的值。
例如,值“5708”应更改为“DGL152”,值“9584”应更改为“JVM154”。在 col_id=155 的情况下,没有 type_id=30 的行,那么我们应该插入一个具有以下值的新行

------------------------------------| 9  | 155    | 30      | MVR155   |------------------------------------

表中有很多这样的记录。通过这种方式,我们应该更改 type_id=30 的行的值,或者如果该行对于表中的所有记录都不存在则插入该行。我怎么能这样做?任何机构都可以帮助我解决问题。

编辑:我知道如何使用 UPDATE 和 SET 设置更新值,但我正在寻找的是在单个查询中完成整个更新和插入过程。
感谢和问候

最佳答案

要插入或更新,请使用带有 ON DUPLICATE KEY UPDATE 子句的 INSERT 语句。 col_id + type_id 必须有唯一索引才能使其工作。

insert into mytable (col_id, type_id, value)
select col_id, 30 as type_id, concat(value, col_id) as new_value
from mytable src
where type_id = 22
on duplicate key update value = src.new_value;

关于mysql - 如果不存在,则插入新行,具体取决于同一表的其他行中的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25304383/

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