我有一个由这个SQL语句创建的表:
CREATE TABLE employees (
id INTEGER NOT NULL AUTO_INCREMENT,
name VARCHAR(20),
PRIMARY KEY (id)
);
我想使用类似
的内容插入表格INSERT IGNORE INTO employees (name) values ('foo');
但是如果表格中已经有一个名字为'foo'的人,则该声明无效。是否有声明忽略除主键或定义为唯一的字段之外的字段上的重复项?
答案 0 :(得分:1)
INSERT INTO employees (name)
SELECT "foo" name FROM (select count(*) c
from employees
where name = "foo"
having c = 0) x;
为了提高效率,您应该在name
上设置一个索引。我不确定你为什么不想把它变成一个独特的索引。