避免在mysql表中间接重复

时间:2011-12-21 16:28:11

标签: php mysql

我不是指两个完全相同的行。

我的表的简单结构是这样的:

id val1 val2

val1和val2用于将两个对象链接在一起,我不知道哪个是哪个,因为它们引用了同一个表。

我需要避免以下情况:

id  val1    val2
1   40      60
2   60      40

我可以使用INSERT IGNORE来避免直接重复,但它不适用于上面的那个。

我也试图避免来自PHP的多个查询,所以我问是否可以在从PHP发送的一个SQL查询中执行此操作。

2 个答案:

答案 0 :(得分:5)

插入时,只需检查是否val1 <= val2,如果是,请按顺序插入,如果不切换它们。在这种情况下,您将始终确保重复值会导致相同的插入。

答案 1 :(得分:2)

我通过应用程序代码或数据库触发器来强制解决问题,这样就可以保证val1&lt;插入数据时的val2。然后在(val1,val2)上创建一个唯一索引。