对重复KEY:多列唯一约束
问题描述:
现在我有:对重复KEY:多列唯一约束
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)不存在(否则跳过插入)。
基本上(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,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
这可能吗?
答
使UNIQUE KEY
到(a,b)
不b
ALTER TABLE tblname ADD UNIQUE (a,b)
答
CREATE UNIQUE INDEX index_unique_on_a_and_b ON mytable (a,b)
答
值得一提的是,如果你尝试添加ADD UNIQUE(A,B),而没有在表中的数据,你可能会得到一个重复的关键错误。清空表格,添加唯一索引,它会起作用。
哈哈,谢谢,我不敢相信我很愚蠢:) – Emma