2011-01-26 29 views
0

我有一個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 )

回答

1

對於有人爲您解答此問題,您需要發佈您的實際表結構(包括存在的任何主鍵/唯一鍵)。

如果您的表沒有主鍵/唯一鍵,那麼唯一的方法是運行SELECT並查看是否返回任何行,並在沒有找到行時執行INSERT。

如果您希望表中的行在field2和field3上唯一,那麼您應該在這些列上創建唯一索引(可以使用ALTER TABLE查詢完成)。

編輯:你想要一個唯一的索引,而不是單獨的每個這些領域,但在他們兩個。你想運行這個查詢:

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

一旦你這樣做了,你可以使用INSERT IGNORE。

1
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

相關問題