伙计们,我是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
在我养成太多坏习惯之前,我正试着花一些时间找出正确的做事方法。有什么建议?感谢。
答案 0 :(得分:0)
两个以上的项目是否可能相同,例如100 = 103 = 106?这会发生吗?
Item Name EquivItem
---- ------ ----------
100 bubba 103
103 gump 106
106 shrimp 103
只要等价物不能链接在一起,并且始终具有一对一的关系,您的解决方案对我来说就完全没问了。
如果出现这种情况,我会首先清理数据以确保所有EquivItem引用链中最低的Item ID ...然后您的原始查询仍然可以完成这项工作。