1

我基本上想将两个值('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;

但是当表为空时它不起作用,因为外部选择语句不包含任何条目......</p>

我应该如何进行?我不知道如何以不同的方式处理这个......</p>

4

2 回答 2

0

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

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

然后使用

INSERT.. ON DUPLICATE KEY UPDATE
于 2013-11-09T17:03:41.077 回答
0

你误会了。如果您有一个唯一约束(如主键)cls,则不会以任何方式干扰jg.

sql小提琴

于 2013-11-09T17:03:53.767 回答