MySQL如何避免重复行

时间:2016-02-07 14:26:07

标签: php mysql sql insert duplicates

我的MySQL表有点问题。

以下是我的db表:

enter image description here

如何避免重复行,我想在添加新插入时如果列'doc'和'date'具有相同的值只是替换它们?

enter image description here

enter image description here

如果有人帮助我,我将非常感激。提前谢谢。

2 个答案:

答案 0 :(得分:2)

为doc和date列添加唯一索引,然后在重复更新

上使用
INSERT INTO mytable (id, doc, date)
values ('id','doc','date')
on duplicate key update date = 'date' 

或任何你需要的东西。您可以指定多个列,例如......

on duplicate key update date = 'date, doc = 'doc', etc...

修改

如果doc和date不是键,并且你不想要它们的索引,我认为唯一的方法是首先提取查询,看看是否存在一行,doc和date都等于你的新doc和date值。如果存在行,请更新它 - 如果它不存在,则插入新的。

答案 1 :(得分:0)

如果您想要插入表格并且表格使用AI作为主键,并且您没有明确地制作一个,那么您将始终制作副本。

" ON DUPLICATE KEY"功能不能扩展到" ON DUPLICATE FIELD"功能

菲尔说,唯一真正的解决方案就是改变代码。做类似的事情:

SELECT id
FROM mytable
WHERE doc = '$doc' AND
date = '$date'

然后,如果有任何结果,您可以使用显式ID进行插入,也可以忽略它。

INSERT INTO mytable (id, doc, date)
values ('$id','$doc','$date')