我正在尝试执行以下查询:
INSERT INTO table_listnames (name, address, tele) VALUES ('Rupert', 'Somewhere', '022') WHERE NOT EXISTS ( SELECT name FROM table_listnames WHERE name='value' ); 但这会返回错误。基本上,如果该记录的“名称”字段已经存在于另一条记录中,我不想插入一条记录-如何检查新名称是否唯一?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
我实际上并不建议您这样做,因为UNIQUEPiskvor和其他人建议的索引是一种更好的方法,但是您实际上可以做您想做的事情:
CREATE TABLE table_listnames
( id
int(11) NOT NULL auto_increment, name
varchar(255) NOT NULL, address
varchar(255) NOT NULL, tele
varchar(255) NOT NULL, PRIMARY KEY (id
) ) ENGINE=InnoDB; 插入一条记录:
INSERT INTO table_listnames (name, address, tele) SELECT * FROM (SELECT 'Rupert', 'Somewhere', '022') AS tmp WHERE NOT EXISTS ( SELECT name FROM table_listnames WHERE name = 'Rupert' ) LIMIT 1;
Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0
SELECT * FROM table_listnames
;
+----+--------+-----------+------+ | id | name | address | tele | +----+--------+-----------+------+ | 1 | Rupert | Somewhere | 022 | +----+--------+-----------+------+ 尝试再次插入相同的记录:
INSERT INTO table_listnames (name, address, tele) SELECT * FROM (SELECT 'Rupert', 'Somewhere', '022') AS tmp WHERE NOT EXISTS ( SELECT name FROM table_listnames WHERE name = 'Rupert' ) LIMIT 1;
Query OK, 0 rows affected (0.00 sec) Records: 0 Duplicates: 0 Warnings: 0
+----+--------+-----------+------+ | id | name | address | tele | +----+--------+-----------+------+ | 1 | Rupert | Somewhere | 022 | +----+--------+-----------+------+ 插入其他记录:
INSERT INTO table_listnames (name, address, tele) SELECT * FROM (SELECT 'John', 'Doe', '022') AS tmp WHERE NOT EXISTS ( SELECT name FROM table_listnames WHERE name = 'John' ) LIMIT 1;
Query OK, 1 row affected (0.00 sec) Records: 1 Duplicates: 0 Warnings: 0
SELECT * FROM table_listnames
;
+----+--------+-----------+------+ | id | name | address | tele | +----+--------+-----------+------+ | 1 | Rupert | Somewhere | 022 | | 2 | John | Doe | 022 | +----+--------+-----------+------+ 等等...来源:stack overflow