2010-02-18 110 views

回答

11

如果兩個ResultSet s是同一個數據庫,那麼爲什麼不檢索過程中使用union將它們結合起來;例如

select A, B 
from C 
union 
select A, B 
from D 

但是,如果這是不是一種選擇,那麼我建議定義類來表示您ResultSet提取的行和實施equals/hashCode允許爲比較相等。然後簡單地將每個添加到Set(例如HashSet)以刪除重複。

+1

+1 ...很好的回答...非常精確,並且重點...如果我擁有這些權利,我會贊成你10次。 – 2010-02-18 19:13:18

+2

UNION刪除重複項,強制排序。 UNION ALL在功能上連接結果集。如果dups可接受,或者您知道兩個結果集沒有重疊,請使用UNION ALL。 – 2010-02-18 20:41:12

+0

@Adam:OP已經聲明他希望重複行只顯示一次,因此我提到了UNION而不是UNION ALL。 – Adamski 2010-02-19 08:45:14

3

您可以:

  1. 創建具有對應於列
  2. 實現使用由您定義的字段「重複」的equals()hashCode()方法屬性的類(讓你的IDE幫助你的代的這些)
  3. createa一個SetHashSet):

    集combinedDataSet =新的HashSet();

  4. 迭代每個結果集和構建對象:

    while (rs1.next) { 
        YourClass obj = new YourClass(); 
        obj.setSomeProperty(rs.getString(1)); 
        obj.setAnotherProperty(rs.getString(2)); 
        // etc.. 
        cominbedDataSet.add(obj); 
    } 
    

    相同的迭代無二rs2

只有在情況下做到這一點你無法通過獲得所需的結果SQL查詢!

+0

+1 ... .......... :) – 2010-02-19 12:58:29

+0

@Bozho我想和你溝通。我沒有任何編程問題,我可以在這裏發佈。你回答了我的各種問題,因此,我知道你是適合我職業生涯的建議。我也檢查了您的博客,但沒有找到任何方式與您溝通。我不想用SO與你溝通,因爲這是錯誤的。如果您在寶貴的時間裏給我一些時間,並告訴我如何與您聊天,我會非常感激您。 謝謝。 – 2010-02-19 13:22:10

+1

@Yatendra Goel如果您有特殊問題,請在SO諮詢。如果您的問題不那麼特別,請查看我的博客(在我的個人資料中鏈接)並發表評論。 – Bozho 2010-02-19 13:31:51