gpt4 book ai didi

mysql - 如何在 MySQL 中忽略插入语句中的连续重复项

转载 作者:行者123 更新时间:2023-11-30 21:49:00 25 4
gpt4 key购买 nike

我想忽略重复项(或更新重复项的键),但仅限于连续重复项。

假设我的初始表如下所示(uka 是列名):

uk a
----
x 1

迭代 1 插入 1,所以我希望忽略它以避免重复。

迭代 2 插入 2,我的表现在看起来像这样:

uk  a
----
x 1
x 2

迭代 3 插入 1,因为我的唯一键 = x 的最后一行与 1 不同,所以我希望再次插入 1:

uk  a
----
x 1
x 2
x 1

如何在 MySQL 中实现这一点?

我目前的解决方案是先从表中查询数据并删除这些重复项,但我更希望它由 MySQL 处理。

最佳答案

您需要一个将作为自增主键的列

CREATE TABLE your_table(
id INT NOT NULL AUTO_INCREMENT,
uk CHAR(30) NOT NULL,
a INT,
PRIMARY KEY (id)
);
INSERT INTO your_table(uk, a) VALUES ('x', 1)

现在您可以使用以下插入命令来避免重复描述

INSERT INTO your_table(uk, a)
SELECT 'x', 1 FROM your_table t1
JOIN (
SELECT max(id) maxid, uk
FROM your_table
GROUP BY uk
) t ON t.maxid = t1.id and
t1.a != 1 and
t.uk = 'x'

第二次插入可以是下面的

INSERT INTO your_table(uk, a)
SELECT 'x', 2 FROM your_table t1
JOIN (
SELECT max(id) maxid, uk
FROM your_table
GROUP BY uk
) t ON t.maxid = t1.id and
t1.a != 2 and
t.uk = 'x'

第三次插入将与第一次相同,结果表将符合预期。

参见 demo

关于mysql - 如何在 MySQL 中忽略插入语句中的连续重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48093911/

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