Zapytanie według mnie powinno wyjąć jeden najnowszy post dla każdego 'page [w rozumieniu blog]'.
SELECT *, MAX(post_created) FROM posts GROUP BY post_page_id;
MAX() nie wyszukuje po typie datetime?
SELECT * FROM (SELECT * FROM posts ORDER BY post_created DESC) p GROUP BY post_page_id