Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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 - Fatal编程技术网

Php MySQL插入:避免使用多列重复

Php MySQL插入:避免使用多列重复,php,mysql,Php,Mysql,我基本上想在表t1的列(cls,jg)中插入两个值('Val',1)。 虽然cls设置为唯一,但jg必须使用相同的值多次出现,因此插入忽略将不起作用。在此之前,我必须检查该对('Val',1)是否已经存在,如果不存在,我必须插入这些值 我这样试过: INSERT INTO t1 (`cls`,`jg`) SELECT 'Val',1 FROM cls WHERE NOT EXISTS( SELECT 1 FROM cls WHERE `cls`='Val' AND `jg`=1) LIM

我基本上想在表t1的列(
cls
jg
)中插入两个值('Val',1)。 虽然
cls
设置为唯一,但jg必须使用相同的值多次出现,因此插入忽略将不起作用。在此之前,我必须检查该对('Val',1)是否已经存在,如果不存在,我必须插入这些值

我这样试过:

INSERT INTO t1 (`cls`,`jg`)
SELECT 'Val',1 FROM cls WHERE NOT EXISTS(
    SELECT 1 FROM cls WHERE `cls`='Val' AND `jg`=1)
LIMIT 1;
但当表为空时,它不起作用,因为此时外部select语句不包含任何条目


我应该如何进行?我不知道如何以不同的方式处理这个问题……

在cls、jg上使用唯一的综合指数

ALTER IGNORE TABLE t1 ADD UNIQUE  INDEX(cls(200), jg)
然后使用

INSERT.. ON DUPLICATE KEY UPDATE

你错了。如果在
cls
上有一个唯一的约束(如主键),它不会以任何方式干扰
jg
的值


但我不想检查
cls
的值是否已经存在,我想同时检查
cls
jg
。例如,如果我在表格中有一个条目('XYZ',1),插入('Value',1)是正确的,但是当里面已经有('Value',1)时,就不会了。哦,我当时看错了问题@Mihai是正确的,在这两个字段上都做一个复合索引,然后进行一个普通的插入忽略。这给了我
BLOB/TEXT列'cls',在键规范中使用,没有键长度
;可能是因为cls本身已经是唯一的?我不确定,尝试删除cls上的约束。