2011-07-31 112 views
6

现在我有:对重复KEY:多列唯一约束

INSERT INTO mytable (a,b,c,d) VALUES(1,2,3,4) 
    ON DUPLICATE KEY UPDATE c=VALUES(c),d=VALUES(d) 

如果abUNIQUE按键,工程...

但现在我只想更新时,另一行与表(a,b)不存在(否则跳过插入)。

基本上(a,b) 768,16是唯一,不(a)(b),但两者都连接。

例如,这些行会有效

ID (auto-inc) | a | b | c | d 
      0 | 5 | 1 | 343 |466 
      1 | 5 | 2 | 363 |466 
      2 | 5 | 3 | 343 |496 
      3 | 7 | 1 | 343 |496 

因为有5,15,25.37.1

但列#2这里应该考虑的列#1重复,所以列# 1应该更新:

ID (auto-inc) | a | b | c | d 
      0 | 5 | 1 | 343 |466 
      1 | 5 | 1 | 363 |466 
      2 | 5 | 3 | 343 |496 
      3 | 7 | 1 | 343 |496 

这可能吗?

回答

13

使UNIQUE KEY(a,b)b

ALTER TABLE tblname ADD UNIQUE (a,b) 
+0

哈哈,谢谢,我不敢相信我很愚蠢:) – Emma

1
CREATE UNIQUE INDEX index_unique_on_a_and_b ON mytable (a,b) 
1

值得一提的是,如果你尝试添加ADD UNIQUE(A,B),而没有在表中的数据,你可能会得到一个重复的关键错误。清空表格,添加唯一索引,它会起作用。