1>.Create a query for pulling all data which has condition userkey is not empty and then deduplicate based on the user key. By default , the deduplication is run on the lastModified field and will only keep the latest records.
2>. If this is for targeting purposes , you can also use an Incremental query which only shows you changed , modified or latest records which were previously not processed
You can sort the records on the basis of Registration Date in Descending Order and then you can select the First Record. This can be achieved either by the JS Activity or you can achieve this by Enrichment itself.
Depending on the DB used the syntax maybe different. You simply need to apply some sort of ranking (rank using subscriber key and order by registration date descending. It is a datetime format so the possibility to pick up records or more for the same subscriber is minimum.
For example, if using SQL Server, you can use the partition by command to do that.