作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想忽略重复项(或更新重复项的键),但仅限于连续重复项。
假设我的初始表如下所示(uk
和 a
是列名):
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/
我是一名优秀的程序员,十分优秀!