如何在java中删除重复的一列?

时间:2013-05-23 14:43:55

标签: java sql

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

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

Table2,table3,table4基于table1的值。有可能获取table2的值为2行,但table table3的返回值可能是5行,table4的返回值是8行。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

当然,这意味着您可能会看到两次商品代码123,一次是产品代码456,另一次是产品代码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中执行此操作。