views:

207

answers:

1

I've got a table containing some duplicates (defined as some specific columns contain the same values). What's the best way to get all those rose back? I need all the duplictes, so group by in combination with having count() > 1* is not the way I'd like to go.

So if my table contains the following data

1 - foo - bar - something
2 - foo - bar - another thing
3 - foo - bar - something
4 - foo - bar - something else

I'd like to get returned:

1 - foo - bar - something
3 - foo - bar - something

Thanks a lot for helping!

Stefan

A: 
  1. Fetch all items (SELECT * FROM ..) in a List
  2. Create a new HashBag, passing the list in constructor
  3. get only the items where getCount() is more than 1.

This will work if you have mapped an object to the table, whose equals() method returns true if all the properties are the same.


Another way is to use a subselect. The subselect being your GROUP BY + COUNT() query, and the outer query comparing with the results of the subquery.

Bozho
thanks for formatting my question - and of course thanks for your answer :) Of course I could do it in Java, but I'd like to get only the duplicates back from database...
swalkner
why? isn't the end-result important, rather than the means.
Bozho
yes - but it's a pretty large table, so it would be nice not to have all the data in the memory.
swalkner
try subselects (updated my answer)
Bozho