0

我有重复行的结果集。但我只需要从一列中删除重复项。其他列需要重复项。

Table1 : productcode,productname
Table2 : A_itemcode ,A_itemname
Table3 : B_itemcode,b_itemname
Table4 : c_itemcode,c_itemname

表 2、表 3、表 4 的值基于表 1。表 2 的值可以是 2 行,但表 3 的返回值可能是 5 行,表 4 的返回值是 8 行。

因为我确实加入了这些表。所以很明显我会得到多行。现在我想单独显示但没有重复的值。我的意思是产品代码可能是重复的,但它应该是项目代码的重复。

这里的 itemcode 应该是唯一的,如何在 java 的一列中删除重复项?

4

1 回答 1

0

这种事情是在 SQL 中完成的,而不是 Java。

但是你还没有定义你想要什么。如果您希望每个 itemcode 只查看一次,可以通过按 itemcode 分组来实现。然后,您必须决定要如何处理您将为每个项目代码获得的记录组。这称为“聚合”。例如,您可能希望查看每个字段的最大值(按数据库使用的排序规则排序):

SELECT itemcode, 
MAX(itemname), 
MAX(productcode), 
MAX(productname)
FROM table1
GROUP BY itemcode
ORDER BY itemcode

或者,您可能有兴趣查看四个字段的所有唯一组合的列表:

SELECT itemcode, 
itemname, 
productcode, 
productname
FROM table1
GROUP BY itemcode, itemname, productcode, productname
ORDER BY itemcode, productcode

当然,这意味着您很可能会两次看到 itemcode 123,一次是 productcode 456,然后是 productcode 789。

这一切都取决于你在寻找什么。如果您需要更好的帮助,您必须弄清楚并解释。如果您可以显示您的表结构和一些示例数据以及所需输出的列表,则会更容易。

更新

根据您更新的问题,我认为您正在加入一个“代码”,该代码为您提供跨四个表的多个匹配项,但您希望在每个表中看到与该代码关联的唯一“名称”。这将需要这样的东西:

SELECT productcode, 
 productname, 
 A_itemname, 
 B_itemname, 
 C_itemname
FROM Table1
JOIN Table2 ON A_itemcode = productcode
JOIN Table3 ON B_itemcode = productcode
JOIN Table4 ON C_itemcode = productcode
GROUP BY productcode, 
 productname, 
 A_itemname, 
 B_itemname, 
 C_itemname

如果这不是您的想法,请尝试再次解释。

同样,在 SQL 中执行此操作,而不是在 Java 中。

于 2013-05-23T18:06:52.427 回答