Rows, by position, have no real meaning in a database (at least I can't think of any). Why do you care its actual row location?
How do you know that 3rd record is the record you want to delete? Match an ID, match a phrase in another field, do something to uniquely identify the record as the record you want to access. Doing this by it row location will not do this for you.
If you have five records that all match exactly and you only want to delete one then add the LIMIT 1 to the end of your DELETE statement. If they are exact the row doesn't matter. The 3rd or 5th or 7th wouldn't matter since they match your query exactly. So delete one of your matching query.
Now it sounds as if you are showing users a table of data in some order, which may or may not be duplicated, and allowing them the option to delete a row. You are taking the actual row location instead of storing the Primary Key with each displayed row. Then when a user selects a delete, you would just use the attached Primary Key to the row and delete that row.
You say "the primary key with several other fields are the same" - That can't be true as you can't have to identical primary keys. I'm now thinking you have some flaw in your database design. Post a table schema and sample of exactly what you are doing. No point continuing if you backed yourself into a corner with the design (which is sounds like)
(I can't comment on other posts so updates have to be edited in this post)