generally, start by defining which columns constitute a "duplicate"
i put "duplicate" in quotes because in almost every case where someone wants duplicates removed, they also have an auto_increment on the table -- which, by definition, means that there are actually no duplicate rows, just rows with the same values in certain columns or combinations of columns
once you've decided which columns determine your dupes, look at the values in the other columns, and ask yourself if you care which rows should provide the values for these other columns
to illustrate this scenario, consider the following three rows in a users table --
userid email username age
42 email@example.com fred -
9 firstname.lastname@example.org - -
37 email@example.com todd 25
the "duplicates" column is the email, and your objective is to eliminate the dupes and leave only one row with firstname.lastname@example.org
but look at the other columns -- if you kept row 9, you'd be throwing away some valuable information
have i given you enough information for your rather general question?