我有重复行的结果集。但是我只需要从一列中删除副本。其他列需要重复。
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?
答案 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中执行此操作。