Java 通过删除重复项在左联接查询后获取数据?

Java 通过删除重复项在左联接查询后获取数据?,java,mysql,jdbc,Java,Mysql,Jdbc,我对两个表使用了一个左连接查询,因此我在resultset中得到了主表列值的多个值。我怎样才能删除其中的重复项 查询: SELECT cc.CCODE, cc.CNAME, rc.RCODE, rc.RNAME FROM RCODE AS rc LEFT JOIN CCODE AS cc ON cc.RCODE = rc.RCODE GROUP BY cc.ccode 对于rc.RCODE,如果子表中有多个条目,我会得到重复的值。一旦我得到了结果集,我如何在代码级别删除它 第一个表

我对两个表使用了一个左连接查询,因此我在resultset中得到了主表列值的多个值。我怎样才能删除其中的重复项

查询:

SELECT cc.CCODE, cc.CNAME, rc.RCODE, rc.RNAME
  FROM RCODE AS rc 
  LEFT JOIN CCODE AS cc ON cc.RCODE = rc.RCODE
 GROUP BY cc.ccode
对于
rc.RCODE
,如果子表中有多个条目,我会得到重复的值。一旦我得到了结果集,我如何在代码级别删除它


第一个表-->RCODE INDIA PAKISTAN AMERICA第二个表-->RCODE CCODE INDIA KERALA INDIA KARNATAKA AMERICA TEMP我需要获取印度->及其CCODE ANERICA其CCODE PAKISTAN其CCODE->如果需要获取RCODE时需要null ok,您的问题可能不太清楚,但是,如果您想在结果集中为RCode表中的每一行设置一行,并且最多包含CCode表中的一行信息,那么您应该编写查询以准确生成所需的内容,而不是在获取数据后修改结果集。由于每个RCode值需要CCode表中的一行,我们可以使用:

SELECT cc.CCode, cc.CName, rc.RCode, rc.RName
  FROM RCode AS rc
  LEFT JOIN (SELECT c1.CCode, c1.RCode, c1.CName
               FROM CCode AS c1
               JOIN (SELECT c2.RCode, MAX(c2.CCode) AS CCode
                       FROM CCode AS c2
                      GROUP BY c2.RCode) AS c3
                 ON c1.CCode = c3.CCode AND c1.RCode = c3.RCode
            ) AS cc
    ON cc.RCode = rc.RCode

最里面的子查询(标记为c3)为您提供CCode表中每个RCode的最大CCode。当它与CCode表连接时,它也会给您相应的CName。此结果集(带标记的cc)与RCode表保持外部连接,但对于每个RCode,cc结果集中最多有一行,除非CCode表包含多个具有相同RCode和最大CCode值的行。如果这是一个问题,那么您需要找到另一种机制,从CCode表中为每个RCode值提供一行(可能是
MAX(CName)
而不是
MAX(CCode)
).

请调整查询或提供查询和表数据。我们可以尝试。如果重复是您的问题,为什么不在不希望重复的列上应用主键或唯一索引,但是我需要每个Rcode子表中有多少CCode r。对于主表中的每个主要kry Rcode子表中我需要获得多少外国关键数据->对于印度->Rcode印度->CCode可以->对于美国的喀拉拉邦、卡纳塔克邦、孟加拉->可以没有CCode来计算它们…合计的数量是多少?请澄清问题,以解释您真正需要什么——确切地说,您需要什么——因为根据问题的描述,您是否需要计数还很不清楚。还不清楚您可能需要哪些CName值,也不清楚如果您实际上只是在计算有多少个CName值,那么为什么需要CCode值。另外,对于左外连接,当给定RCode的CCode表中有0行时,您将面临计数1的危险。第一个表-->RCode INDIA PAKISTAN AMERICA第二个表-->RCode CCode INDIA KERALA INDIA KARNATAKA AMERICA TEMP我需要获取印度->及其CCode ANERICA其CCode PAKISTAN其CCode->如果需要null ok以获取RCode