SELECT * FROM Mytable ORDER BY userID, Date I assume Date is really a date/time type and not varchar... Edit, after clarification: Untested SELECT M.* FROM ( --one row for each user SELECT MIN(Date) AS FirstUserDate, userID FROM MyTable GROUP BY userID ) foo JOIN MyTable M ON foo.userID = M.userID ORDER BY foo.FirstUserDate, M.userID, M.Date;