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) ;
我假设你的意思是更新如果字段还没有条目。 – 2011-01-26 15:45:15
???我没有ID ...我只需要在表格中搜索名称和姓氏值是否已被忽略。否则,我把它们放在DB上。 – markzzz 2011-01-26 15:45:41