2015-06-24 58 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