这是我的表格,其中包含一些示例数据
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/