mysql – 如果满足两列(无论顺序)的条件,则INSERT或UPDATE

我想做以下事情:

INSERT INTO table1 (term1, term2, number) values ('A','B',10); 

但是,如果值1和B已经存在于表1中,而不管它们的顺序如何,即.谓词

(term1='A' && term2='B') OR (`term1='B' && term2='A')

是的,那我只是想更新列号.有没有办法做到这一点?

最佳答案 处理这种情况的一种(可能是)干净的方法是使用INSERT … ON DUPLICATE KEY UPDATE,
read the documentation.

If you specify ON DUPLICATE KEY UPDATE, and a row is inserted that
would cause a duplicate value in a UNIQUE index or PRIMARY KEY, MySQL
performs an UPDATE of the old row

重要的部分是在UNIQUE索引中导致重复值.因此,您需要创建多列唯一索引.

现在我不确定你是否可以通过这种方式管理订单,因此我会创建一个额外的字段,其中包含字段的排序值的串联,并且该字段具有唯一索引.

编辑:您可以只存储哈希并将其编入索引,而不是存储字段的串联.

点赞