我基本上想要将两个值('Val',1)插入到表t1的列(cls
,jg
)中。
虽然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语句不包含任何条目......
我该怎么办?我不知道如何以不同的方式处理这个......
答案 0 :(得分:0)
在cls,jg上使用唯一的复合索引。
ALTER IGNORE TABLE t1 ADD UNIQUE INDEX(cls(200), jg)
然后使用
INSERT.. ON DUPLICATE KEY UPDATE
答案 1 :(得分:0)
你错了。如果cls
上有唯一约束(如主键),则不会以任何方式干扰jg
的值。