我想在MySQL中具有唯一的列配对,但是可以以任何顺序...

所以如果我有三列

Person1 Person2 Person3


它们都是一个人的FOREIGN键,我只希望它们在表中只允许一次...

该行:

1 2 3


是相同的

3 2 1


是相同的

2 3 1


等等等等...所以我认为做UNIQUE(Person1, Person2, Person3)并不能完成此任务。

最佳答案

我的解决方案(考虑到此模式)将使订单可预测。最简单的方法是以降序存储它们,以便第一行始终包含最小值,依此类推。这使查询变得更容易,并且您将无法添加具有相同成员的两行。

由于您的问题很笼统,所以我的回答很模糊。如果您提供了要完成的工作的示例,则可能会有更好的方法。以我的经验,当您发现自己的列代表相同类型的关系时,通常最好进行归一化。例如,从friend1,friend2,... friendN到每个用户的好友表。

09-16 04:08