2015-06-24 94 views
-1

我有這樣INSERT查詢唯一的記錄MySQL的

id | name | zip 
1 | abc | 1234 
2 | xyz | 4321 
3 | asd | 1234 

我想插入這樣記錄的表的idname當插入可能具有相同的價值,但如果zip值也相同對於那個特定的記錄它沒有被插入。如果沒有,應該插入。

如:我可以插入與id=1價值和價值的另一個一行name= abc但如果該記錄也有zip=1234它不應該被插入。

我該如何做到這一點。

+0

如果使用不存在 – apomene

+0

爲需要唯一的列添加唯一鍵。 –

回答

0

你需要插入行之前做了檢查,對exmpale

select * from table where zip = @zip and name = @name and id = @id 

,如果沒有行返回,你可以做插入...

+0

謝謝我現在覺得很愚蠢 –

+0

你也可以在一個插入查詢中做同樣的事情。試試這個... INSERT INTO表VALUES(zip,name,id)ON DUPLICATE KEY UPDATE zip = zip,name = name,zip =壓縮 –

1

創建兩個唯一索引:

create unique index idx_table_name_zip on table(name, zip) 
create unique index idx_table_id_zip on table(id, zip) 

該數據庫將然後保證你要強制唯一性。

1

建立從ID,名稱的主鍵和zip結合

ALTER TABLE表中添加PRIMARY KEY(ID,姓名,郵編)

有了這個行/記錄標記如果所有三列都相同,則重複,否則它是非常好的非重複記錄。

檢查這更多here