更好的SQL查询删除等效行

时间:2011-04-05 21:31:47

标签: sql ms-access

伙计们,我是SQL新手,无法找出执行查询最后一部分的“正确方法”。我有一个表,其中包含项目列表及其等价物。根据需要,行数基本上是两倍,我正在尝试找到一种SQL方法来选择1/2条目,因此没有重复项。

使用重复项启动表:

Item   Name     EquivItem
----   ------   ---------- 
100    bubba    106
103    gump     109
106    shrimp   100
109    grits    103

结果表将是:

Item   Name     EquivItem
-----  -----    ----------
100    bubba    106
103    gump     109

我在顺序代码中使用了几个嵌套循环来过滤掉重复项,但最后写了一个有效但却感觉像是黑客的查询。

我随意使用WHERE(Item< EquivItem)来只选择其中一行。实际的表格有点复杂,我担心可能会出现这种情况。

SELECT *
FROM T
WHERE Item < EquivItem

在我养成太多坏习惯之前,我正试着花一些时间找出正确的做事方法。有什么建议?感谢。

1 个答案:

答案 0 :(得分:0)

两个以上的项目是否可能相同,例如100 = 103 = 106?这会发生吗?

Item   Name     EquivItem
----   ------   ---------- 
100    bubba    103
103    gump     106
106    shrimp   103

只要等价物不能链接在一起,并且始终具有一对一的关系,您的解决方案对我来说就完全没问了。

如果出现这种情况,我会首先清理数据以确保所有EquivItem引用链中最低的Item ID ...然后您的原始查询仍然可以完成这项工作。