【发布时间】:2016-05-17 05:32:54
【问题描述】:
【问题讨论】:
-
你是什么意思“只是替换它们”?
-
如果列
doc和date具有相同的值,您不需要做任何事情。该表中只有 3 列,唯一的另一个是id -
@RiggsFolly 我在帖子中添加了新图片。我希望这能解决我的问题。
标签: php mysql sql insert duplicates
【问题讨论】:
doc 和 date 具有相同的值,您不需要做任何事情。该表中只有 3 列,唯一的另一个是 id
标签: php mysql sql insert duplicates
为文档和日期列添加唯一索引,然后在重复更新时使用
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 值的行.如果行存在,更新它 - 如果它不存在,插入新的。
【讨论】:
if column 'doc' AND 'date' have same values他们不是钥匙
如果您想要插入到表中,并且该表使用 AI 作为其主键并且您没有明确地创建一个,那么您将始终创建一个副本。
“ON DUPLICATE KEY”函数不能扩展为“ON DUPLICATE FIELD”函数。
您唯一真正的解决方案是更改代码,正如 Phil 所说。执行以下操作:
SELECT id
FROM mytable
WHERE doc = '$doc' AND
date = '$date'
如果有任何结果,您可以使用显式 id 进行插入,也可以忽略它。
INSERT INTO mytable (id, doc, date)
values ('$id','$doc','$date')
【讨论】: