There is another very good way to do this, in SQL Server 2005, if you do not have the key set up, but want to effectively use a column or more as your primary key.
;with DelDup as (select row_number() over (partition by
FirstName, LastName order by FirstName, LastName) as RowNofrom duplicateTest)
Delete from DelDup where RowNo> 1
--alternate--
;with DelDup as (select row_number() over (partition by
ID order by ID) as RowNofrom duplicateTest)
Delete from DelDup where RowNo> 1
You can easily adjust this to use one column or as many as you wish, as long as you update the column(s) after the partition by and after the order by.