我有类似表: -重复值忽略列顺序
+----+---+---+
| Id | A | B |
+----+---+---+
| 1 | 1 | 2 |
+----+---+---+
| 2 | 2 | 1 |
+----+---+---+
| 3 | 3 | 4 |
+----+---+---+
| 4 | 0 | 5 |
+----+---+---+
| 5 | 5 | 0 |
+----+---+---+
我想删除所有重复值对的,无论哪个列包含的值,例如之后无论查询可能是我想看到: -
+----+---+---+
| Id | A | B |
+----+---+---+
| 1 | 1 | 2 |
+----+---+---+
| 3 | 3 | 4 |
+----+---+---+
| 4 | 0 | 5 |
+----+---+---+
我想找到在Microsoft SQL Server的解决方案(在< = 2005的工作,虽然我很感兴趣的任何解决方案,无论如何依靠> = 2008功能)。
此外,请注意,A和B将在1-100范围内(但这并不是永远保证的,它们是替代种子整数外键,但是外表最多可能会增长到几百行) 。
我想知道我是否在这里错过了一些明显的解决方案。已发生的所有的人似乎相当过度紧张,但我认为他们很可能工作,如: -
- 有一个子查询返回的位字段与对应的ID之一每一位,并使用这个值删除重复。
- 不知何故,透视,删除重复,然后unpivot。可能会很棘手。
在此先感谢!
这听起来像一个造型问题太。如果你不在乎哪个值在哪个列中,那么这两列代表相同的数据,并且应该被标准化。 – JNK
@JNK - 完全同意,但是在这些情况下通常情况下,此时模型不能修改。 – ljs