Stupid MySQL query question

This is a query scenario that's often come up but I've never quite figured out the best way to handle it. Let's say there's a table that records events from a set of 500 servers. The schema looks something like:

Is there an easy way to query for the latest events on each server? Short of having another table which just records the latest events per server, is there a way to do this efficiently? The schema is somewhat flexible and keys can be deleted or added.

Without knowing the version of MySQL nor when derived tables were supported, I'd say this would work with 5.0 or later. It is possible that it would return multiple records per server unless (server_id, ts) is a unique key. Having that as a unique key may cause problems depending on datetime resolution and frequency of events.

SELECT
main.id,
main.ts,
main.server_id,
main.event_id,
main.event_msg
FROM
MyTable AS main
INNER JOIN (SELECT max(ts) as maxts, server_id FROM MyTable GROUP BY server_id) as latest
ON main.ts = latest.maxts AND main.server_id = latest.server_id