2011-07-31 152 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),而沒有在表中的數據,你可能會得到一個重複的關鍵錯誤。清空表格,添加唯一索引,它會起作用。