Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL如何避免重复行_Php_Mysql_Sql_Insert_Duplicates - Fatal编程技术网

Php MySQL如何避免重复行

Php MySQL如何避免重复行,php,mysql,sql,insert,duplicates,Php,Mysql,Sql,Insert,Duplicates,我的MySQL表有点问题 下面是我的db表的外观: 如何避免重复行,我想在添加新插入时,如果列“doc”和“date”具有相同的值,只替换它们 如果有人帮助我,我将非常感激。提前感谢。为“文档”和“日期”列添加唯一索引,然后用于重复更新 INSERT INTO mytable (id, doc, date) values ('id','doc','date') on duplicate key update date = 'date' 或者你需要的任何东西。您可以指定多个列,例如 on

我的MySQL表有点问题

下面是我的db表的外观:

如何避免重复行,我想在添加新插入时,如果列“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值的行。如果行存在,则更新它-如果它不存在,则插入新的。

如果要插入到表中,并且该表的主键使用AI,并且没有显式创建AI,则始终会创建一个副本

“钥匙复制时”功能不能扩展为“字段复制时”功能

正如Phil所说,您唯一真正的解决方案是更改代码。做一些类似于:

SELECT id
FROM mytable
WHERE doc = '$doc' AND
date = '$date'
然后,如果有任何结果,可以使用显式id进行插入,也可以忽略它

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

“替换它们”是什么意思?如果列
doc
date
具有相同的值,则无需执行任何操作。该表中只有3列,另一列是
id
@riggsfully I在post中添加新图像。我希望这能澄清我的问题。如果“doc”列和“date”列的值相同,则根本不是他要求的
如果我有“doc”:528和“date”:2015年9月30日,则它们不是我想要的键,但不能添加“doc”:528和“date”:2015年9月30日(具有不同的id),但我可以加上“文件”:529和“日期”:2015年9月30日或“文件”:528和“日期”:2015年9月29日。