gpt4 book ai didi

mysql - 根据 MySql 中表中其他列的值创建/更新行

转载 作者:行者123 更新时间:2023-11-29 20:02:17 25 4
gpt4 key购买 nike

以下是我的表架构,我们使用的是mysql 5.7版本

     CREATE TABLE rule_reports (
pkey int(11) NOT NULL AUTO_INCREMENT,
email varchar(250) DEFAULT NULL,
domain varchar(250) NOT NULL,
rule_id bigint(20) unsigned NOT NULL,
rule_type varchar(250) NOT NULL,
log_time datetime DEFAULT NULL,
count int(11) DEFAULT NULL,
PRIMARY KEY (pkey),
KEY dwl (domain,rule_id,log_time)
)

我想增加计数列而不是表中的新行,如果domain,rule_id,rule_type 值的组合已存在于表行中

表的示例行

+------+-------------------------+---------+------------------+------------------+-------------------------+----------
| pkey | email | domain | rule_id | rule_type | log_time | count
+------+-------------------------+---------+------------------+------------------+-------------------------+-----------
| 1 | user1@yopmail.com | user1 | 566 | type1 | 2016-09-13 17:23:02.000 | 1
| 2 | user2@yopmail.com | user2 | 567 | type2 | 2016-09-13 17:23:02.000 | 1
-----------------------------------------------------------------------------------------------------------------------

假设像下面这样的 if 语句不应创建一行,因为表中已存在相同的域、rule_id、rule_type 值,因此我需要在此处增加一个 count 列增量

insert into rule_reports(domain,rule_id,rule_type,count) values('user1',566,'type1',1)

像下面这样的语句应该在表中创建一个新行

insert into rule_reports(domain,rule_id,rule_type,count) values('user3',568,'type3',1)

最佳答案

在涉及的列上添加唯一索引,如果记录已存在,则使用ON DUPLICATE KEY UPDATE 来增加计数。

ALTER TABLE rule_reports ADD UNIQUE unique_index(domain, rule_id, rule_type);

INSERT INTO rule_reports (domain, rule_id, rule_type, count)
VALUES ('user1', 566, 'type1', 1)
ON DUPLICATE KEY UPDATE count = count + 1

关于mysql - 根据 MySql 中表中其他列的值创建/更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40483592/

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