如果满足两个列上的条件(无论顺序如何),则插入或更新



我想做以下事情:

INSERT INTO table1 (term1, term2, number) values ('A','B',10); 
但是,如果值A和B已经存在于table1 中,无论的顺序如何,即:谓语
(term1='A' && term2='B') OR (`term1='B' && term2='A')

成立,那么我只想更新列号。有什么办法吗?

一个(也许) 干净的方法处理这种情况是使用INSERT ... ON DUPLICATE KEY UPDATE,阅读文档

如果指定ON DUPLICATE KEY UPDATE,则插入一行是否会在UNIQUE索引或PRIMARY KEY中导致重复的值执行旧行

的UPDATE

重要的是会导致UNIQUE索引中的重复值。因此,您需要创建一个多列唯一索引

现在我不确定您是否可以以这种方式管理顺序,因此我将创建一个额外的字段,其中包含您的字段的排序值的连接,并使该字段唯一索引。

EDIT:您也可以只存储散列并对其进行索引,而不是存储您的字段。

谢谢@okiharaherbst,

这就是我所做的:我添加了新的列"uniqueKey"作为主键,插入如下:

INSERT INTO table1(term1,term2,num,uniquekey) VALUES ( "a","b",10, 
concat(greatest(term1,term2),least(term1,term2))) on duplicate key update num=10;

相关内容

  • 没有找到相关文章

最新更新