What you describe should work. Since it doesn't, I suggest looking at your data and the details of how you set up your import.
When you specify the update existing records option, you have to specify a pair of fields that match a record to be imported with any existing record with the same value in this field. This "matching" did not occur as you expected and thus you got duplicate entries. Either the wrong pair (or pairs) of fields where specified as the match fields or the values in the fields weren't identical like you expected. If a match field is text, it could be as simple as the presence of a space or other invisible character is keeping your values from matching.