There are different ways to merge two entries. To minimize information loss, the merging is done on a field-per-field basis. Several things can happen:

The best solution to this problem would be to keep a modify timestamp for each data field. Unfortunately this would need way to much memory on thin clients. Even on servers this would greatly increase overhead. So we have to find another way:

It is not so obvious how this situation could be handeld. To decide on which version to keep we will take a look the this example first: A server has synchronized with two different clients. All three contain equivalent data records:

Now the data gets changed on both clients:

Then client A synchronizes. The data has not changed on the server. So no conflict occurs, the server keeps the new data from client A:

When client B synchronizes, a conflict occurs and the data has to be merged. It is up to the server to decide which version to keep. For illustration, we will show both:

Although some modifications get lost, it seems better to keep the server version. We do not know how much time has passed between both synchronizations. Other clients might have synchronized inbetween. Keeping the client version would allow the client to overwrite data with an old version.