Tôi có hai bộ kết quả (rs1
và rs2
) có cùng các trường. Bây giờ làm thế nào để kết hợp hai bộ kết quả thành một để các hàng trùng lặp được hiển thị một lần.Làm cách nào để kết hợp hai ResultSets trong Java?
Trả lời
nếu hai ResultSet
s là từ cùng một cơ sở dữ liệu thì tại sao không kết hợp chúng trong quá trình truy xuất bằng cách sử dụng union
; ví dụ.
select A, B
from C
union
select A, B
from D
Tuy nhiên, nếu đây không phải là một lựa chọn thì tôi khuyên bạn nên xác định một lớp để đại diện cho một Row chiết xuất từ ResultSet
của bạn và thực hiện equals
/hashCode
cho phép được so sánh với bình đẳng. Sau đó, chỉ cần thêm mỗi vào một số Set
(ví dụ: HashSet
) để xóa các từ khóa trùng lặp.
Bạn có thể:
- Tạo một lớp có các đặc tính tương ứng với các cột
- thực hiện
equals()
vàhashCode()
phương pháp sử dụng các lĩnh vực mà bạn xác định được "nhân bản" (chúng ta hãy IDE của bạn giúp bạn với thế hệ của những) createa một
Set
(HashSet
):Set combinedDataSet = new HashSet();
Lặp mỗi ResultSet, và xây dựng các đối tượng:
while (rs1.next) { YourClass obj = new YourClass(); obj.setSomeProperty(rs.getString(1)); obj.setAnotherProperty(rs.getString(2)); // etc.. cominbedDataSet.add(obj); }
Các lặp Cũng vậy với
rs2
Làm điều này chỉ trong trường hợp bạn không thể có được kết quả mong muốn thông qua một Truy vấn SQL!
+1 ... .......... :) –
@Bozho Tôi muốn liên lạc với bạn. Tôi không có bất kỳ vấn đề lập trình nào mà tôi có thể đăng ở đây. Bạn đã trả lời các câu hỏi khác nhau của tôi và do đó, tôi biết rằng bạn là người thích hợp để có lời khuyên từ bạn cho sự nghiệp của tôi. Tôi cũng đã kiểm tra blog của bạn nhưng không tìm thấy cách nào để liên lạc với bạn. Tôi không muốn sử dụng SO để giao tiếp với bạn vì nó sẽ là sai. Tôi sẽ rất biết ơn bạn nếu bạn cho tôi một thời gian từ thời gian quý báu của bạn và cho tôi biết làm thế nào tôi có thể trò chuyện với bạn. Cảm ơn. –
@Yatendra Goel nếu bạn có câu hỏi cụ thể, hãy hỏi họ tại SO. Nếu bạn có câu hỏi ít cụ thể hơn, hãy kiểm tra blog của tôi (được liên kết trong tiểu sử của tôi ở đây) và gửi cho tôi nhận xét. – Bozho
- 1. Làm cách nào để kết hợp hai bảng trong NHibernate?
- 2. Làm cách nào để kết hợp hai Doctrine 2 ArrayCollection()
- 3. Làm cách nào để kết hợp hai pixel ARGB?
- 4. Làm thế nào để "hợp nhất" hai URI trong Java?
- 5. Làm thế nào để kết hợp hai chuỗi trong cành?
- 6. Có cách nào tốt hơn để kết hợp hai bộ chuỗi trong java?
- 7. Cách xử lý nhiều ResultSets, mỗi ResultSets có nhiều hàng? IDataReader.NextResult() end Read()
- 8. Làm cách nào để hợp nhất hai luồng đầu vào trong Java?
- 9. Làm thế nào để bạn kết hợp hai repo git?
- 10. Làm cách nào để hợp nhất hai ngày trong JavaScript?
- 11. PHP: Làm thế nào để kết hợp hai lớp này?
- 12. Làm thế nào để kết hợp hai mảng byte
- 13. Làm thế nào để kết hợp hai procs thành một?
- 14. Làm cách nào để hợp nhất hai lớp trong PHP?
- 15. Làm cách nào để kết hợp nhiều trường trong QueryParser?
- 16. Làm cách nào để kết hợp hai bảng trong một truy vấn?
- 17. Làm cách nào để kết hợp hai đối tượng trong Javascript?
- 18. Làm cách nào để kết hợp nhiều hơn hai danh sách chung trong C# Zip?
- 19. Làm cách nào để kết hợp hai loại ràng buộc với một lôgic hoặc trong Haskell?
- 20. Làm cách nào để hợp nhất hai kết quả Nhiệm vụ trong nhiệm vụ thứ ba?
- 21. Làm cách nào để kết hợp hai trường trong mô tả văn bản SelectList?
- 22. Làm cách nào để kết hợp hai điều kiện trong mệnh đề where?
- 23. Làm cách nào để kết hợp hai biến thể của một xung đột trong emerge emacs?
- 24. Làm cách nào để kết hợp tất cả các thành phần trong IEnumerable của IEnumerables?
- 25. Làm cách nào để kết hợp/hợp nhất các cột từ hai kết quả truy vấn SQL?
- 26. Kết hợp hai trường
- 27. Làm cách nào để hợp nhất hai danh sách IQueryable
- 28. Kết hợp hai UIImages
- 29. Làm cách nào để kết hợp các tập hợp kết quả từ hai cuộc gọi thủ tục được lưu trữ?
- 30. Hợp nhất hai byte trong java/android
+1 ... câu trả lời tuyệt vời ... rất chính xác và đến mức ... Tôi sẽ upvote bạn 10 lần nếu tôi có quyền. –
UNION loại bỏ các bản sao, buộc phải sắp xếp. UNION ALL kết hợp các bộ kết quả. Nếu dups có thể chấp nhận được hoặc bạn biết hai tập kết quả không có chồng chéo, hãy sử dụng UNION ALL. –
@Adam: OP đã tuyên bố anh ta muốn các hàng trùng lặp chỉ được hiển thị một lần, vì vậy tại sao tôi đã đề cập UNION chứ không phải UNION ALL. – Adamski