现在我有:
INSERT INTO mytable (a,b,c,d) VALUES(1,2,3,4)
ON DUPLICATE KEY UPDATE c=VALUES(c),d=VALUES(d)
如果a
或b
为UNIQUE
个密钥...
但是现在我只想在表中不存在另一对(a,b)的行时更新UPDATE(否则跳过插入)。
基本上(a,b)
应该是独一无二的,而不是(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,1
,5,2
,5.3
,7.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
这可能吗?
答案 0 :(得分:13)
将UNIQUE KEY
改为(a,b)
而不是b
ALTER TABLE tblname ADD UNIQUE (a,b)
答案 1 :(得分:1)
CREATE UNIQUE INDEX index_unique_on_a_and_b ON mytable (a,b)
答案 2 :(得分:1)
值得注意的是,如果在表中有数据时尝试添加ADD UNIQUE(a,b),则可能会出现重复键错误。清空表,添加唯一索引,它将起作用。