id | name | zip
1 | abc | 1234
2 | xyz | 4321
3 | asd | 1234
我想插入这样记录的表的id
和name
当插入可能具有相同的价值,但如果zip
值也相同对于那个特定的记录它没有被插入。如果没有,应该插入。
如:我可以插入与id=1
价值和价值的另一个一行name= abc
但如果该记录也有zip=1234
它不应该被插入。
我该如何做到这一点。
id | name | zip
1 | abc | 1234
2 | xyz | 4321
3 | asd | 1234
我想插入这样记录的表的id
和name
当插入可能具有相同的价值,但如果zip
值也相同对于那个特定的记录它没有被插入。如果没有,应该插入。
如:我可以插入与id=1
价值和价值的另一个一行name= abc
但如果该记录也有zip=1234
它不应该被插入。
我该如何做到这一点。
你需要插入行之前做了检查,对exmpale
select * from table where zip = @zip and name = @name and id = @id
,如果没有行返回,你可以做插入...
谢谢我现在觉得很愚蠢 –
你也可以在一个插入查询中做同样的事情。试试这个... INSERT INTO表VALUES(zip,name,id)ON DUPLICATE KEY UPDATE zip = zip,name = name,zip =压缩 –
创建两个唯一索引:
create unique index idx_table_name_zip on table(name, zip)
create unique index idx_table_id_zip on table(id, zip)
该数据库将然后保证你要强制唯一性。
建立从ID,名称的主键和zip结合
ALTER TABLE表中添加PRIMARY KEY(ID,姓名,邮编)
有了这个行/记录标记如果所有三列都相同,则重复,否则它是非常好的非重复记录。
检查这更多here
如果使用不存在 – apomene
为需要唯一的列添加唯一键。 –