3
I don't think it's possible to do that with a single query, except maybe with the subquery feature available in MySQL 4.1+.
If you're running MySQL < 4.1, you could do one query to determine the maximum msg_id to delete, and then do a second query to perform the deletion. Or you could write a PHP script to do it.
I'm also not sure whether it's safe to remove private messages simply by deleting them from the table. It probably is, but I'd check the existing script that deletes PMs to make sure there isn't any other cleanup involved.