SELECT * FROM states; id | state | city ----+------------+---------------- 1 | Virginia | Norfolk 2 | Virginia | Chesapeake 3 | Virginia | Virginia Beach 4 | Indiana | Evansville 5 | Indiana | Fort Wayne 6 | Virginia | Falls Church 7 | Indiana | Indianapolis 8 | Washington | Seatle 9 | Washington | Spokane SELECT s.id AS id, s.state AS state, s.city AS city FROM states s JOIN (SELECT min(id) AS min_id, state FROM states GROUP BY state) j ON s.state = j.state ORDER BY j.min_id, s.id ; id | state | city ----+------------+---------------- 1 | Virginia | Norfolk 2 | Virginia | Chesapeake 3 | Virginia | Virginia Beach 6 | Virginia | Falls Church 4 | Indiana | Evansville 5 | Indiana | Fort Wayne 7 | Indiana | Indianapolis 8 | Washington | Seatle 9 | Washington | Spokane