I think this is *close* to what you want:
Code:
SELECT webName, value AS titleSort, value AS title, pageID, X.catID, pageName, sortBy
FROM pages, pagesCats, pagesIndex,
( SELECT catID, MIN(sortBy) AS minsort
FROM pagesIndex,pages
WHERE pages.ID=pagesIndex.pageID GROUP BY catID ) AS X
WHERE pagesIndex.catID = X.catID
AND pagesindex.pageID = pages.ID
AND pages.sortBy = X.minsort
AND pagesCats.ID = X.catID
AND subsetof = '2'
ORDER BY X.minsort, pageID
But it does get duplicate catID/sortBy values. I'm not sure if you want that or not.