我不是指两个完全相同的行。
我的表的简单结构是这样的:
id val1 val2
val1和val2用于将两个对象链接在一起,我不知道哪个是哪个,因为它们引用了同一个表。
我需要避免以下情况:
id val1 val2 1 40 60 2 60 40
我可以使用INSERT IGNORE来避免直接重复,但它不适用于上面的那个。
我也试图避免来自PHP的多个查询,所以我问是否可以在从PHP发送的一个SQL查询中执行此操作。
答案 0 :(得分:5)
插入时,只需检查是否val1 <= val2
,如果是,请按顺序插入,如果不切换它们。在这种情况下,您将始终确保重复值会导致相同的插入。
答案 1 :(得分:2)
我通过应用程序代码或数据库触发器来强制解决问题,这样就可以保证val1&lt;插入数据时的val2。然后在(val1,val2)上创建一个唯一索引。