MySQL插入:避免重复使用/多个cols

时间:2013-11-09 16:54:07

标签: php mysql

我基本上想要将两个值('Val',1)插入到表t1的列(clsjg)中。 虽然cls设置为唯一,但jg必须以相同的值出现多次,因此INSERT IGNORE不起作用。因此,我必须检查对('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语句不包含任何条目......

我该怎么办?我不知道如何以不同的方式处理这个......

2 个答案:

答案 0 :(得分:0)

在cls,jg上使用唯一的复合索引。

ALTER IGNORE TABLE t1 ADD UNIQUE  INDEX(cls(200), jg)

然后使用

INSERT.. ON DUPLICATE KEY UPDATE

答案 1 :(得分:0)

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

sql fiddle