It depends on your schema. If you have something along the lines of
CREATE TABLE message (
id INT UNSIGNED AUTO_INCREMENT,
body TEXT,
PRIMARY KEY(id));
CREATE TABLE sent (
time INT UNSIGNED,
from fid INT UNSIGNED,
to tid INT UNSIGNED,
msg INT UNSIGNED
PRIMARY KEY(time, msg, to),
FOREIGN KEY(msg) REFERENCES message(id));
Then just
SELECT body FROM message WHERE id IN (SELECT msg FROM sent WHERE time=timestamp AND from=someone)
If you actually store the message one time per recipient, then GROUP BY message.id, or LIMIT 0,1. If the only thing you use in your where clause is the timestamp, then there could in reality be two or more different messages sent at that exact time. GROUP BY would return all of them, while limit might very well get you a message you didn't want in that case.