0

我有一个由这个 SQL 语句创建的表:

CREATE TABLE employees (
    id  INTEGER  NOT NULL AUTO_INCREMENT,
    name   VARCHAR(20),
    PRIMARY KEY (id)
);

我想使用类似的东西插入表格

INSERT IGNORE INTO employees (name) values ('foo');

但是如果表中已经有一个名为“foo”的人,那么该语句什么也不做。是否有一条语句忽略除主键或定义为唯一的字段以外的字段上的重复项?

4

1 回答 1

1
INSERT INTO employees (name)
SELECT "foo" name FROM (select count(*) c
                        from employees
                        where name = "foo"
                        having c = 0) x;

你应该有一个name效率指数。我不确定您为什么不想将其设为唯一索引。

小提琴

于 2013-02-27T20:28:39.960 回答