2011-12-21 77 views
3

我不是指两个恰好是相同的行。避免在mysql表中间接重复

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

ID VAL1 VAL2

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

我需要避免以下几点:

 
id val1 val2 
1 40  60 
2 60  40 

我可以使用INSERT忽略以避免直接复制,但它并不与上面的一个工作。

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

+0

数据来自哪里? – Nonym 2011-12-21 16:48:51

+0

这些值是添加到玩家之间的用户ID。 – inestical 2011-12-22 09:47:45

回答

5

插入时,只要检查val1 <= val2,如果是的话就插入它们,如果没有切换它们。有了这个条件,您将始终确保重复值导致相同的插入。

2

我想通过应用程序代码或数据库触发器强制执行此问题,以便在插入数据时保证val1 < val2。然后在(val1,val2)上创建一个唯一索引。