2016-08-17 19 views
-1

我正在尝试从我的结果集中查找重复的行。我在resultset中有大量数据,这是从resultset中找到重复项的最佳方法吗?我也尝试过数据列表。将结果集的一行与剩余的全部进行比较并找到重复项

List inner=new ArrayList<String>(); 
Connection con; 
Statement stmt; 
ResultSet rs; 
ResultSetMetaData rsmd; 
int columnNumber; 

try{ 
    Class.forName("com.mysql.jdbc.Driver"); 
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root",""); 
    stmt=con.createStatement(); 
    rs=stmt.executeQuery("select * from mydata_table where srno<1000"); 
    rsmd=rs.getMetaData(); 
    columnNumber=rsmd.getColumnCount(); 
    while(rs.next()){ 

     for(int i=1;i<columnNumber;i++){ 
      inner.add(rs.getString(i)); 
     } 

    }   
    System.out.println("\n" + inner); 

    rs.close(); 
    con.close(); 
}catch(Exception e){ 
    System.out.println(e); 
} 

我想比较一行与其余行,并从列表中找到重复的行。

+0

那你为什么不在SQL中使用'DISTINCT'子句?这将是更干净的解决方案 –

+0

这听起来像应该用SQL而不是ResultSet来完成。 – bradimus

+0

我试过DISTINCT子句,但它并没有在我的情况下返回唯一的记录。 –

回答

0

如果您对查询中的记录进行排序(可能是ORDER BY ...),那么您只需要将每条记录与其后继者进行比较。

+0

谢谢您的帮助。但是有超过40列,按列排序? –

+0

@iks_in - 如果你喜欢,他们都可以。或者其中很多将使重复检查变得容易。例如,如果第1,2和3列在大多数记录中通常是唯一的,则按它们进行排序,然后仅在所有记录相同时向前搜索。 – OldCurmudgeon

相关问题