A general solutions to your problem and preventing it in the future:
Having an identity field* in your table is a way to assure that you can never have two identical rows. Having such a field means you can uniquely select any row and do whatever you wish to that only that row. Problem will be gone 'forever'.
Now - in your current state - an easy solution would be to add an identity column to your table - then, find your rows which are otherwise duplicates, and delete all but one using whatever fields you wish as the search criteria to find functional duplicates.
More Preventive Medicine:
You could also define a UNIQUE constraint on as many columns as necessary and cause such entries to be rejected in advance.
SQL UNIQUE Constraint[
^] - this adds overhead to your inserts and updates.
* a field with a default value of GetDate() is almost as good - but if the records are entered very quickly they could potentially have the same value. It's a larger data field, and, unless you've a need for a date the IDENTITY field is the way to go.