MySQL 插入但更新/忽略重复

标签 mysql insert duplicates

这是我的表格,其中包含一些示例数据

C ID | D ID    | Details |
--------------------------
 a   | b_data1 | d1      |
 a   | b_data2 | d2      |
 b   | b_data1 | d1      |
 b   | b_data2 | d2      |
 c   | b_data1 | d1      |
 c   | b_data2 | d2      |

当我运行此查询时##

INSERT IGNORE INTO table_name (C_ID, D_ID, Details) VALUES ('C', 'b_data3','d3') ('C', 'b_data2','d2')

当它应该忽略第二个值对 ('C', 'b_data2','d2') 时,它会插入这两行。

未定义索引/主键。

我想确保没有重复的行,这意味着三列中的数据组合应该使该行唯一。我无法使其唯一。正如我在这里所说明的,a 可以保留与 b 相同的内容,但 a 不应该有重复的内容。

最佳答案

INSERT IGNORE 表示“忽略违反唯一约束的行,而不是使查询失败”。您需要定义 UNIQUE 列才能使其按您期望的方式工作 - 例如CREATE TABLE 表名(col1 类型、col2 类型、col3 类型、UNIQUE(col1、col2、col3))

关于MySQL 插入但更新/忽略重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10775471/

相关文章:

mysql - SELECT 查询如何在多个列上工作而不在列名之间使用逗号?

php - 仅更新具有相似特征的一组结果中的一行

mysql - 插入mysql时出错?

php - MySQL 只插入两个字段

c# - 如何在 Entity Framework 中基于旧实体创建新实体?

MySQL 试图以一种有效的方式重用子查询的结果

mysql - SQL 文件无法恢复

php-从 php 插入后未触发 MySQL 触发器

javascript - 减少数组中的嵌套对象键值

javascript - 从多维数组中删除重复的元素对