MySql - 只有当某些字段没有被分类时才插入

问题描述:

我有一个MySql表,其中有field1(id),field2(name)和field3(surname)。MySql - 只有当某些字段没有被分类时才插入

仅当对字段2和字段3尚未被分类时,Id才喜欢插入该值。我该怎么做?

INSERT IGNORE不工作,因为field1是int autoincrement,每个INSERT都不相同。

P.S.我想摆脱有关REPLACE INTO,因为它没有任何意义“改写”的数据,如果它已经存在

干杯

编辑

表结构 ID = INT主要 名= VARCHAR 姓氏= VARCHAR

名字和姓氏不能是每个UNIQUE(我可以有2个名字或姓氏具有相同的值)。我想要的是对名字和姓氏不一样的价值。

ES:

0马科Cordi(OK)

1马可Daghine(OK)

2的Fabio Cordi(OK)

3马科Cordi(NOT OK,已经definied )

对于有人为您解答此问题,您需要发布您的实际表结构(包括存在的任何主键/唯一键)。

如果您的表没有主键/唯一键,那么唯一的方法是运行SELECT并查看是否返回任何行,并在没有找到行时执行INSERT。

如果您希望表中的行在field2和field3上唯一,那么您应该在这些列上创建唯一索引(可以使用ALTER TABLE查询完成)。

编辑:你想要一个唯一的索引,而不是单独的每个这些领域,但在他们两个。你想运行这个查询:

ALTER TABLE `yourtable` 
ADD UNIQUE INDEX `unique_name` (`field2`, `field3`); 

一旦你这样做了,你可以使用INSERT IGNORE。

update myTable 
set name = coalesce(name, 'newname'), 
surname = coalesce(surname, 'newsurname') 
where id = myID; 

(更新)

insert into myTable(name, surname) 
values ('newname', 'newsurname') 
where NOT EXISTS (select id from myTable where name = newname and surname = surname) ; 
+0

我假设你的意思是更新如果字段还没有条目。 – 2011-01-26 15:45:15

+0

???我没有ID ...我只需要在表格中搜索名称和姓氏值是否已被忽略。否则,我把它们放在DB上。 – markzzz 2011-01-26 15:45:41